В нашем путешествии по изучению указателей в 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