Указатели
Что такое указатель
Указатель — переменная, которая хранит адрес другой переменной в памяти, а не её значение.
x := 42
p := &x // p содержит адрес x
fmt.Println(p) // 0xc000018068 (адрес)
fmt.Println(*p) // 42 — разыменование
Оператор & получает адрес переменной. Оператор * — читает значение по адресу.
Тип указателя
Тип указателя записывается со звёздочкой: *int, *string, *MyStruct. Указатель на int и указатель на string — разные типы; присваивать их друг другу нельзя.
var p *int // нулевое значение — nil
n := 10
p = &n
*p = 20 // теперь n == 20
new
new(T) выделяет память под значение типа T, инициализирует нулём и возвращает указатель:
p := new(int) // *int, *p == 0
*p = 7
В Go нет явного free — сборщик мусора освобождает память, когда на неё не остаётся ссылок.
Упражнения
| № | Задание | Сложность |
|---|---|---|
| 1 | Упражнение 1 | easy |
| 2 | Упражнение 2 | easy |
| 3 | Упражнение 3 | medium |