type A struct {
a int
}
func f() (*A, error) {
// do something
// if err != nil {
// return nil, err
// }
return nil, nil
}
func TestX(t *testing.T) {
a, err := f()
if err != nil {
t.Log(err)
} else {
t.Log(a.a) // 这里 a 为 nil ,所以 a.a 非法访问,崩溃
}
}
go 关于错误处理,似乎默认都是大家约定,如果 err != nil ,另外一个值是正常的值,但是理论上来说,即使 err = nil ,另外一个值也不一定是合理的值。感觉下面的写法似乎更好一点。
func TestX(t *testing.T) {
a, err := f()
if a == nil {
t.Log(err)
} else {
t.Log(a.a)
}
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.