🧠 Что такое указатели?
Указатель — это переменная, которая хранит адрес другой переменной. В 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перед использованием. 
В следующей главе мы научимся работать с ошибками и создавать собственные типы ошибок.