小天管理 发表于 2024年7月8日 发表于 2024年7月8日 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) } }
已推荐帖子