I am a beginner in go language and have a problem with string:
string is defined as:
type stringStruct struct{
str unsafe.Pointer
len int }
I use:
str := "abc"
fmt.Printf("%p
", &str)
to print the struct address and I want to know how to print the address of underlying array of string.
I am not good at English and don't know if I express enough clearly.
thank you very much for your help.
Use the unsafe package to convert the string to a reflect.StringHeader. The Data field of the header is the address of the backing array of bytes.
func stringAddr(s string) uintptr {
return (*reflect.StringHeader)(unsafe.Pointer(&s)).Data
}
Use the function like this:
str := "abc"
fmt.Printf("%08x
", stringAddr(str))