воскресенье, 6 января 2019 г.

Основы Go: указатели

В 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


Читайте также:


Комментариев нет:

Отправить комментарий