*今天看到一段代碼感覺很奇怪。。。*
代碼的如下
package main
import "unsafe"
const (
a = "abc"
b = len(a)
c = unsafe.Sizeof(a)
)
func main(){
println(a, b, c)
}
代碼運行結果如下
感覺很奇怪。。爲什麼unsafe.Sizeof(a)計算出來的值是16?問題先寫出來,我要去好好研究一下。。。
初步解釋:因爲Golang中的sring內部實現由兩部分組成,一部分是指向字符串起始地址的指針,另一部分是字符串的長度,兩部分各是8字節,所以一共16字節
//組成可以理解成此結構體
typedef struct{
char* buffer;
size_tlen;
} string;