🧠 Что такое указатели?
Указатель — это переменная, которая хранит адрес другой переменной. В Go указатели позволяют работать с памятью напрямую и изменять значения в функциях.
🧪 Почему это важно?
- Передача по ссылке: экономит ресурсы при передаче больших структур.
- Изменение значений внутри функций.
- Создание эффективных алгоритмов и структур данных.
🧷 Объявление и использование указателей
var a int = 10
var p *int = &a
fmt.Println(*p) // 10
*p = 20
fmt.Println(a) // 20
&a
— оператор взятия адреса.*p
— оператор разыменования (получение значения по адресу).
🎯 Функции с указателями
Передача переменной по указателю позволяет функции менять значение переменной на месте:
func increment(n *int) {
*n++
}
x := 5
increment(&x)
fmt.Println(x) // 6
🏗 Указатели в структурах
Указатели широко используются со структурами, чтобы:
- не копировать всю структуру,
- изменять поля напрямую,
- экономить память:
type User struct {
Name string
}
func updateName(u *User, name string) {
u.Name = name
}
user := User{Name: "Alex"}
updateName(&user, "Max")
fmt.Println(user.Name) // Max
🔄 Значение по умолчанию
Указатели по умолчанию равны nil
. Проверка на nil
важна:
var p *int
if p != nil {
fmt.Println(*p)
} else {
fmt.Println("Указатель пуст")
}
📌 Главное из главы
- Указатель хранит адрес переменной,
*
используется для получения значения. - Указатели позволяют изменять значения в функциях.
- Часто используются с структурами.
- Проверяй указатели на
nil
перед использованием.
В следующей главе мы научимся работать с ошибками и создавать собственные типы ошибок.