为了账号安全,请及时绑定邮箱和手机立即绑定

使用 oklog/run 来自 Go 编译器的错误“(无值)用作值”

使用 oklog/run 来自 Go 编译器的错误“(无值)用作值”

Go
浮云间 2023-01-03 16:47:36
我正在研究oklog/run包的一个简单示例,并且在尝试返回错误日志时在 VS Code 中看到此编译错误:log.Errorf("abnormal termination: %s", err) (no value) used as value在 group.Run 的描述中说“..Run 仅在所有 actor 退出时返回。Run 返回第一个退出的 actor 返回的错误。”我想知道这是否与它有关,比如它无法使用当前不存在的错误进行编译,因为 run.Group 尚未全部返回?感谢您提供的任何帮助。代码:package mainimport (    "context"    "time"    "github.com/oklog/run"    "github.com/pkg/errors"    log "github.com/sirupsen/logrus")func logAForever(ctx context.Context) {    for {        select {        case err := <-ctx.Done():            log.Error(err)            return        default:            log.Info("A")            time.Sleep(1 * time.Second)        }    }}func logBFor10Sec(ctx context.Context) {    for i := 1; i < 10; i++ {        log.Info("B")        time.Sleep(1 * time.Second)    }}func main() {    ctx, testStopFunc := context.WithCancel(context.Background())    var group run.Group    group.Add(func() error {        log.Info("First actor added to run group. Starting execute function...")        logAForever(ctx)        return nil    }, func(error) {        log.Info("The first interrupt function was invoked.")        testStopFunc()        time.Sleep(100 * time.Millisecond)    })    group.Add(func() error {        log.Info("Second actor added to run group. Starting execute function...")        logBFor10Sec(ctx)        return nil    }, func(error) {        log.Info("The second interrupt function was invoked.")        testStopFunc()        time.Sleep(100 * time.Millisecond)    })    if err := group.Run(); !errors.As(err, &run.SignalError{}) {        // return        return log.Errorf("abnormal termination: %s", err)    }}
查看完整描述

1 回答

?
慕容森

TA贡献1853条经验 获得超18个赞

log.Errorf不返回任何值,但您正试图通过return关键字返回它。


请尝试使用此代码:


if err := group.Run(); !errors.As(err, &run.SignalError{}) {

  log.Errorf("abnormal termination: %s", err)

  return

}


查看完整回答
反对 回复 2023-01-03
  • 1 回答
  • 0 关注
  • 72 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信