gpt4 book ai didi

go - 如何在 Go 中通过一些错误检查从函数返回

转载 作者:数据小太阳 更新时间:2023-10-29 03:14:40 25 4
gpt4 key购买 nike

我有几个数据要加载,如果其中一个失败,我必须记录错误并且不能继续运行代码。
这个代码可以吗?以及如何做到这一点?

func (worker *Worker) GetData() error {
err := worker.LoadModelA()
if err != nil && worker.LogError() // LogError alway return true
return err

err = worker.LoadModelB()
if err != nil && worker.LogError() // LogError alway return true
return err

return err
}

最佳答案

A 出错(在 The Go Playground 上尝试),输出:

LoadModelA
2009/11/10 23:00:00 LogError
2009/11/10 23:00:00 Error LoadModelB

B 出错(在 The Go Playground 上尝试),输出:

LoadModelA
LoadModelB
2009/11/10 23:00:00 LogError
2009/11/10 23:00:00 Error LoadModelB

没有错误(在 The Go Playground 上尝试),输出:

LoadModelA
LoadModelB
Done.
main Done.

代码如下:

package main

import (
"fmt"
"log"
)

func (worker *Worker) GetData() error {
if err := worker.LoadModelA(); err != nil {
worker.LogError()
return err
}
if err := worker.LoadModelB(); err != nil {
worker.LogError()
return err
}
fmt.Println("Done.")
return nil
}

func main() {
w := &Worker{}
err := w.GetData()
if err != nil {
log.Fatal(err)
}
fmt.Println("main Done.")
}

type Worker struct{}

func (w *Worker) LoadModelA() error {
fmt.Println("LoadModelA")
return nil
//return fmt.Errorf("Error LoadModelB")
}
func (w *Worker) LoadModelB() error {
fmt.Println("LoadModelB")
return nil
//return fmt.Errorf("Error LoadModelB")
}
func (w *Worker) LogError() error {
log.Println("LogError")
return nil
}

关于go - 如何在 Go 中通过一些错误检查从函数返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39930200/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com