В нашем путешествии по изучению указателей в Go мы уже поняли их основы. Теперь мы углубимся в манипулирование данными с помощью указателей, уделяя особое внимание операторам null, разыменования и адресации.

Нуль в указателях

Указатель, который не указывает ни на какую ячейку памяти, называется нулевым указателем. В Go мы представляем нулевой указатель с помощью ключевого слова nil. Когда мы объявляем указатель и не назначаем ему место в памяти, он автоматически указывает на nil.

// Declare a pointer
var p *int

// Output the pointer value
fmt.Println(p)  // Output: <nil>

Здесь мы объявили указатель p, но не присвоили ему никакого адреса, поэтому по умолчанию он указывает на nil.

Разыменование указателей

Разыменование указателя относится к получению значения, хранящегося в ячейке памяти, на которую указывает указатель. В Go мы используем оператор * для разыменования указателей.

// Declare an integer variable
x := 10

// Declare a pointer and assign the address of x to it
p := &x

// Output the value of x and the value at the memory location p is pointing to
fmt.Println(x, *p)  // Output: 10 10

В приведенном выше примере p указывает на ячейку памяти x, поэтому *p дает значение, хранящееся в этой ячейке.

Адресный оператор

В Go мы используем оператор & для получения адреса памяти переменной. Этот оператор дает нам возможность создавать указатели.

// Declare an integer variable
x := 10

// Get the memory address of x
p := &x

// Output the memory address
fmt.Println(p)  // Output: memory address (e.g., 0xc0000160b8)

В этом примере &x предоставляет адрес памяти x, и мы сохраняем его в p.

Крайне важно помнить эту мощную мысль Линуса Торвальдса, создателя Linux и Git:

«Говорить дешево. Покажи мне код».

Лучший способ по-настоящему понять указатели — это попрактиковаться в коде, делать ошибки и учиться на них. Сосредоточьтесь на этом учебном путешествии, и вскоре манипулирование данными с помощью указателей станет для вас второй натурой.

Если вам понравилась статья и вы хотите выразить свою поддержку, сделайте следующее:

👏 Аплодируйте истории (50 аплодисментов), чтобы эта статья попала в топ

👉 Подпишитесь на меня в Среднем

Посмотрите больше контента в моем профиле Medium