本文最后更新于:2020年7月2日 晚上

* 今天看到一段代码感觉很奇怪。。。 *

代码的如下

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;

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!

Github添加SSH key时的问题 上一篇
hello world——再出发~ 下一篇