РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
48 of 1593 menu

Тип указателя

Указатель (pointer) в Go — это тип данных, который хранит адрес переменной в памяти, а не само значение. В первом параметре мы передаем переменную, адрес которой нужно получить с помощью оператора &. Во втором параметре мы передаем значение указателя для разыменования с помощью оператора *. Указатели позволяют изменять переменные внутри функций и эффективно работать с большими структурами данных.

Синтаксис

var ptr *T // объявление указателя на тип T ptr = &var // присвоение адреса переменной *ptr = value // разыменование и изменение значения

Пример

Объявим переменную x типа int и получим ее адрес с помощью оператора &:

package main import "fmt" func main() { x := 42 ptr := &x fmt.Println(ptr) // адрес переменной fmt.Println(*ptr) // значение по адресу }

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

"0xc00001a0b0" "42"

В первом выводе мы видим адрес переменной x, во втором — значение по этому адресу.

Пример

Передадим указатель в функцию, чтобы изменить значение переменной:

package main import "fmt" func changeValue(p *int) { *p = 100 } func main() { x := 42 fmt.Println(x) // 42 changeValue(&x) fmt.Println(x) // 100 }

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

"42" "100"

Функция changeValue принимает указатель на int и изменяет значение по этому адресу, что отражается на исходной переменной x.

Пример

Работа с нулевым указателем (nil). Проверим, равен ли указатель nil, и безопасно разыменуем его:

package main import "fmt" func main() { var ptr *int // нулевой указатель if ptr == nil { fmt.Println("pointer is nil") } // безопасная проверка перед разыменованием if ptr != nil { fmt.Println(*ptr) } }

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

"pointer is nil"

Разыменование нулевого указателя вызывает панику, поэтому всегда проверяйте указатель на nil перед использованием.

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

  • тип array,
    который представляет фиксированный набор значений
  • тип slice,
    который представляет динамический массив
  • функцию new,
    которая выделяет память и возвращает указатель на нулевое значение
  • тип map,
    который хранит пары ключ-значение и передается по ссылке
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить