Глагол форматирования %p

Глагол форматирования %p используется для вывода адреса указателя в шестнадцатеричном формате с префиксом 0x. Этот глагол принимает в качестве аргумента указатель любого типа и отображает его значение в виде шестнадцатеричного числа. Если передать значение, не являющееся указателем, глагол %p выведет адрес этого значения, если оно адресуемо.

Синтаксис

gofmt.Printf("%p", ptr)

Пример

Выведем адрес обычной переменной с помощью глагола %p:

gopackage main

import "fmt"

func main() {
  num := 42
  ptr := &num
  fmt.Printf("%p", ptr)
}

Результат выполнения кода:

go"0xc0000a2000"

Пример

Выведем адрес переменной строки с помощью глагола %p:

gopackage main

import "fmt"

func main() {
  str := "abcde"
  ptr := &str
  fmt.Printf("%p", ptr)
}

Результат выполнения кода:

go"0xc0000a2020"

Пример

Выведем адрес элемента слайса с помощью глагола %p:

gopackage main

import "fmt"

func main() {
  nums := []int{1, 2, 3, 4, 5}
  fmt.Printf("%p", &nums[2])
}

Результат выполнения кода:

go"0xc0000aa040"

Пример

Выведем адрес переменной напрямую, без создания указателя:

gopackage main

import "fmt"

func main() {
  num := 42
  fmt.Printf("%p", &num)
}

Результат выполнения кода:

go"0xc0000a2000"

Смотрите также

  • глагол форматирования %v,
    который выводит значение в формате по умолчанию
  • глагол форматирования %#v,
    который выводит значение в синтаксисе Go
  • глагол форматирования %t,
    который выводит булево значение
  • глагол форматирования %x,
    который выводит число в шестнадцатеричном формате