在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
判断一个值是否为nil,最好是直接跟nil进行比较判断,而不要通过interface{}的形参传给另一个函数来进行判断。
但是用反射可以通过interface{}来判断nil,如testnil5。 type State struct {} func testnil1(a, b interface {}) bool { return a == b } func testnil2(a *State, b interface{}) bool{ return a == b } func testnil3(a interface {}) bool { return a == nil } func testnil4(a *State) bool { return a == nil } func testnil5(a interface {}) bool { v := reflect.ValueOf(a) return !v.IsValid() || v.IsNil() } func main(){ var a *State fmt.Println(a) fmt.Println(testnil1(a, nil)) fmt.Println(testnil2(a, nil)) fmt.Println(testnil3(a)) fmt.Println(testnil4(a)) fmt.Println(testnil5(a)) }
输出结果为:
|
请发表评论