go数据类型-空结构体、空接口、nil
空结构体 func main() { a := struct{}{} fmt.Println(unsafe.Sizeof(a)) fmt.Printf("%p\n", &a) } 打印 0 0x117f4e0 有经验的开发人员都知道,所有的空结构体是指向一个 zeroba
go数据类型-sync.map
定义 在runtime的sync.map包中有定义: type Map struct { mu Mutex // 锁 read atomic.Pointer[readOnly] //包含了readOnly类型的一个struct,下方把 Pointer 也贴了 dirty map[any]*entry
go数据类型-map
go的map在面试时候经常会被问到。 最近看到群里有个被问到为什么map的每个桶中只装8个元素? map 的结构 注:解决hash冲突还有一些别的方案:开放地址法 (往目标地址后面放)、再哈希法(再次h...
go数据类型-slice底层
切片的底层数据结构 有上篇string为基础了,能猜到slice肯定也有一个对应的struct。 在runtime的 slice.go中 type slice struct { array unsafe.Pointer len int cap int } 切片的本质是对数组...