go - golang中如何打印字符串底层数组的地址

标签 go

我是go语言初学者,遇到字符串问题:

字符串定义为:

 type stringStruct struct{
      str unsafe.Pointer
      len int }

我使用:

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

打印结构地址,我想知道如何打印地址 底层字符串数组。

我英文不好,不知道表达的够不够清楚。

非常感谢您的帮助。

最佳答案

使用 unsafe打包到convert字符串到 reflect.StringHeader . header 的数据字段是字节支持数组的地址。

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

像这样使用函数:

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

关于go - golang中如何打印字符串底层数组的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52307148/

相关文章:

google-maps - 我应该将新的还是旧的 Context 对象发送到我自己的 gRPC 服务器内的第 3 方 gRPC API?

go - 如何使用 golang 在编译时不知道其类型的情况下解析 protobuf3 消息?

mysql - 无法使用golang更新mysql中的时间戳列

regex - 是否去正则表达式任何字符匹配换行符

mongodb - 如何将 $push 和 $each 与 go mgo 驱动程序一起使用?

go - Rob Pike 在 Go 中的 "the synchronization nature of the channels"是什么意思?

go - 完成后,运行/ vert / build /测试命令挂起。忽略中断信号

json - 如何访问Golang项目的JSON文件中的环境变量?

go - Go中如何实现虚继承

xml - golang : Omit name of struct in xml.编码(marshal)