Как напечатать адрес базового массива строки в golang - PullRequest
0 голосов
/ 13 сентября 2018

Я новичок в языке go и у меня проблема со строкой:

строка определяется как:

 type stringStruct struct{
      str unsafe.Pointer
      len int }

Я использую:

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

чтобы распечатать адрес структуры, и я хочу знать, как напечатать адрес базовый массив строк.

Я плохо владею английским языком и не знаю, достаточно ли четко я выражаюсь.

Большое спасибо за вашу помощь.

1 Ответ

0 голосов
/ 13 сентября 2018

Используйте небезопасный пакет для преобразования строки в refle.StringHeader . Поле данных заголовка является адресом байтового массива.

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

Используйте функцию, подобную этой:

str := "abc"
fmt.Printf("%08x\n", stringAddr(str))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...