Go中也有计算长度的sizeof()内置函数。
package main
import "fmt"
import "unsafe"
func main(){
var a string = "haha"
fmt.Println("sizeof(a) = ", unsafe.Sizeof(b)) // 16
var b int = 1
fmt.Println("sizeof(b) = ", unsafe.Sizeof(b)) // 8
var d int8 = 1
fmt.Println("sizeof(d) = ", unsafe.Sizeof(d)) // 1
var e int16 = 2
fmt.Println("sizeof(e) = ", unsafe.Sizeof(e)) // 2
var f int64 = 3
fmt.Println("sizeof(f) = ", unsafe.Sizeof(f)) // 8
}
这里string的长度是16,而且不论字符串多长都是16。其实String是一个结构体,类似于,一个是指针,另一个就是长度,知道这两个条件就可以确定一个字符串:
type string struct
{
Data uintptr // 指针占8个长度
Len int // 长度64位系统占8个长度
}