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)
}
}

