如何在golang中打印字符串基础数组的地址

时间:2018-09-13 05:25:55

标签: go

我是Go语言的初学者,字符串有问题:

字符串定义为:

 type stringStruct struct{
      str unsafe.Pointer
      len int }

我使用:

str := "abc"
fmt.Printf("%p\n", &str)

打印结构地址,我想知道如何打印结构地址 字符串的基础数组。

我的英语不好,也不知道我说的不够清楚。

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

使用unsafe包将字符串convert转换为reflect.StringHeader。标头的“数据”字段是后备字节数组的地址。

func stringAddr(s string) uintptr {
    return (*reflect.StringHeader)(unsafe.Pointer(&s)).Data
}

使用如下功能:

str := "abc"
fmt.Printf("%08x\n", stringAddr(str))