Тема:Указатель в Голанг.Вопрос: Изменение значения
В данный момент читаю в книге про тему Указатель. У меня возник вопрос по работе указателя.
Вот сам кусочек кода в книге
package main
import "fmt"
func main() {
first := 100
second := &first
first++
*second++
var myNewPointer *int
myNewPointer = second
*myNewPointer++
fmt.Println("First:", first)
fmt.Println("Second:", *second)
}
В книге вывод :
First: 103
Second: 103
Вопрос: В каком моменте стало 103?
В данынй момент я понимаю так:
first и second = 100
После кусочка
first++
*second++
Они стали равны 101
Потом как понял myNewPointer получает в значения адрес ячейки памяти переменной second
var myNewPointer *int
myNewPointer = second
например скажем 0х000010088
И как дальше
*myNewPointer++
Повлияло на то что бы результат стал 103
Ответы (1 шт):
Автор решения: Senior Pomidor
→ Ссылка
first := 100 // создали обычную переменную first
second := &first // создали указатель на переменную first
// теперь second указывает на значение first
first++ // увеличили значение first на 1 (101)
*second++ // увеличили значение first на 1 (102), потому что second указывает на first, а не является самосостоятельной переменной
var myNewPointer *int // создали указатель на int
myNewPointer = second // присвоили указатель на second, теперь myNewPointer указывает на значение first
*myNewPointer++ // увеличили значение first на 1 (103), потому что myNewPointer указывает на first, а не является самосостоятельной переменной
fmt.Println("First:", first)
fmt.Println("Second:", *second)