Golang中unsafe.Sizeof()的問題

*今天看到一段代碼感覺很奇怪。。。*

代碼的如下

package main

import "unsafe"
const (
    a = "abc"
    b = len(a)
    c = unsafe.Sizeof(a)
)

func main(){
    println(a, b, c)
}

代碼運行結果如下

string內部實現

感覺很奇怪。。爲什麼unsafe.Sizeof(a)計算出來的值是16?問題先寫出來,我要去好好研究一下。。。

初步解釋:因爲Golang中的sring內部實現由兩部分組成,一部分是指向字符串起始地址的指針,另一部分是字符串的長度,兩部分各是8字節,所以一共16字節

//組成可以理解成此結構體
typedef struct{

char* buffer;

size_tlen;

} string;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章