将整数存储为特定数字类型(uint8,int16,uint32,int64等)的内存含义是什么?我知道每种类型都可以采用的整数范围,但是使用适当的类型是否可以达到一定的内存效率?
例如,在Golang,它“似乎”更有效的人的年龄存储为UINT8而非单元(根据其规范这相当于UINT32或UINT64 https://golang.org/ref/spec#Numeric_types)
我想了解使用make([]int, 0). 我做这个代码进行测试:
emptySlice := make([]int, 0)
fmt.Println(len(emptySlice))
fmt.Println(cap(emptySlice))
fmt.Println(unsafe.Sizeof(emptySlice))
Run Code Online (Sandbox Code Playgroud)
size和容量返回很明显,都是0,但是slice的大小是24字节,为什么呢?
24 个字节应该是 3 个int64吧?一个包含 24 个字节的切片的内部数组应该类似于:[3]int{},那么为什么一个空切片有 24 个字节呢?