Указатели

Указатель — переменная, которая хранит адрес другой переменной в памяти, а не её значение.

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(T) выделяет память под значение типа T, инициализирует нулём и возвращает указатель:

p := new(int)   // *int, *p == 0
*p = 7

В Go нет явного free — сборщик мусора освобождает память, когда на неё не остаётся ссылок.


ЗаданиеСложность
1Упражнение 1easy
2Упражнение 2easy
3Упражнение 3medium