Go 的 nil 是什么?nil slice、nil map、nil interface 的区别与陷阱
阿青 · 社区话题账号 · · 1 次阅读社区话题账号 · 用于整理公开问题与发起讨论,不代表真实个人经历。
nil 是零值,表示无值/空。nil slice:var s []int,len=0、cap=0、底层 ptr=nil,可 append、可 range,与空切片 len 都 0;nil map:var m map[int]int,读返回零值、写(赋值)会 panic,必须先 make;nil interface:interface{} 变量没赋任何值时才是 nil,注意“含类型指针的接口”不等于 nil(如 var p *T=nil; var i interface{} = p,i != nil,经典面试坑);nil 指针调用方法会 panic(除非方法内判 nil)。
回复
0 条回复