gpt4 book ai didi

exception - 错误是值(value)观(博客)——在逻辑上是一样的吗?

转载 作者:IT王子 更新时间:2023-10-29 00:59:27 27 4
gpt4 key购买 nike

我刚刚阅读了 blog由罗伯派克撰写。我对此有一个小问题,可能我也可能是错的,但仍然希望获得反馈并正确理解 Go。

博客里有一段代码(其实是@jxck_写的)

_, err = fd.Write(p0[a:b])
if err != nil {
return err
}
_, err = fd.Write(p1[c:d])
if err != nil {
return err
}
_, err = fd.Write(p2[e:f])
if err != nil {
return err
}
// and so on

a) 根据我的理解,如果 fd.Write(p0[a:b]) 发生错误,上面的代码将返回,并且永远不会执行 fd.Write(p1[ c:d]) ,对吧?

Rob 建议写这样的东西

var err error
write := func(buf []byte) {
if err != nil {
return
}
_, err = w.Write(buf)
}
write(p0[a:b])
write(p1[c:d])
write(p2[e:f])
// and so on
if err != nil {
return err
}

b) 基于以上,看起来错误将从 sub 函数返回。所以这意味着如果错误发生在 write(p0[a:b]) 那么它仍然会执行 write(p1[c:d]) ,对吧?所以这意味着在逻辑上两者并不相同,对吧?

有人解释一下。

最佳答案

不,它们是一样的。如果 fd.Write(p0[a:b]) 发生了错误err 变量将保持其值。

现在,如果您调用 write(p1[c:d]),则 write() 函数将首先检查是否 err != nil 但由于它已经存储了上一次调用中发生的 error,因此它将立即返回并且不会执行进一步的代码。

关于exception - 错误是值(value)观(博客)——在逻辑上是一样的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28412630/

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