Урок объясняет, что такое указатели в Go, как они позволяют работать с адресами в памяти, разыменовывать значения, изменять внешние переменные и оптимизировать передачу данных в функции.
Указатели позволяют работать с памятью напрямую и изменять данные вне текущей области видимости. Они используются для оптимизации, управления состоянием программы и передачи больших структур без копирования.
В Go аргументы функций передаются по значению - то есть копируются. Это означает:
Указатели позволяют изменить это поведение.
Указатель - это переменная, которая хранит адрес в памяти. Чтобы получить значение по адресу, используют разыменование.
*ptr) даёт доступ к значению по адресу.&:x := 10
ptr := &x
var p *int
Используется оператор *:
x := 10
ptr := &x
fmt.Println(*ptr) // 10
*ptr = 20
fmt.Println(x) // 20
Изменение через указатель меняет оригинальную переменную.
Представим:
big := 998
bigPtr := &big
bigPtr хранит адрес big, а *bigPtr даёт доступ к её значению.
*bigPtr += 1
// Теперь big == 999
Используются, чтобы функция могла менять внешние переменные:
func increment(x *int) {
*x++
}
num := 5
increment(&num)
// num == 6
Преимущества: - отсутствие копирования, - изменение данных в вызывающем коде, - удобная работа с большими структурами.
& - получить адрес переменной.* - разыменовать указатель.