В Go есть указатели. Указатель содержит адрес переменной в памяти.
Тип *T это указатель на значение T. Его нулевое значение nil.
var p *int
Оператор & возвращает указатель на его операнд.
i := 42
p = &i
Оператор * дает доступ к нижележащему значению указателя.
fmt.Println(*p) // прочитать i через указатель p
*p = 21 // установить i через указатель p
Это известно как "разыменование" и "присваивание".
В отличие от C, в Go нет адресной арифметики.
package main
import "fmt"
func main() {
i, j := 42, 2701
p := &i // указатель к i
fmt.Println(*p) // читаем i через указатель
*p = 21 // устанавливаем i через указатель
fmt.Println(i) // смотрим новое значение i
p = &j // указатель к j
*p = *p / 37 // делим j через указатель
fmt.Println(j) // смотрим новое значение j
}
Вывод:
42
21
73
Читайте также:
Комментариев нет:
Отправить комментарий