2 回答
TA贡献1797条经验 获得超6个赞
是的,产生错误的惯用方法是返回多个值。处理错误的惯用方法是:
val, err := myFunc()
if err != nil {
// do something with err
}
// do something with val
在一天结束时,这是一个判断电话,但处理错误几乎总是好的做法。您正在编写的代码也有点不寻常,您通常不会对同一个函数进行 10 次背靠背调用,因此您必须执行的详细错误处理更多是原始代码的结果。例如,您可以使用循环:
for _, num := range []int{2, 24, 56, 87, 97, 47, 37, 31, 69} {
_, err := push(num)
if err != nil {
panic(err)
}
}
不过,您还有一些比不处理推送错误更成问题的事情。一件小事是没有理由push总是返回 0,为什么不仅返回一个错误,而不是一个 int 和一个错误?更大的问题是pop不断递减top,并且getTop只是访问a[top],因此如果top因popped 过多而变得负面,您很容易出现运行时恐慌。您可能需要在您的pop和getTop函数中进行一些错误处理或其他保护措施。
TA贡献1821条经验 获得超4个赞
这是在 go-lang 中处理错误的标准方法。发生错误后有两种选择。
1.记录错误并完全退出程序
记录错误并执行一些相关任务
选项一示例:
func funcX() {
rtnval, err := funcY()
if err != nil {
fmt.Println("error: ", err)
os.Exit(1)
}
//rtnval
}
- 2 回答
- 0 关注
- 117 浏览
添加回答
举报