&
является оператором адреса , оценка которого приводит к адресу памяти, который при передаче в пакет fmt
обычно адрес памяти печатается в шестнадцатеричном формате(«нотация 16 с начальным 0x»).
Адрес памяти - это просто адрес памяти.Не имеет значения, является ли это адрес переменной int
или string
, или переменной типа указателя.При печати все они выглядят «одинаково».
Оператор адреса:
Для операнда x
типа T
операция адреса &x
создаетуказатель типа *T
на x
.
Таким образом, оператор адреса дает вам значение указателя, которое при разыменовании возвращает исходное значение.
&b
будет адресом переменной b
,типа *int
, который при разыменовании: *b
даст вам (значение) b
.
&i
будет адресом переменной i
, типа **int
, который при разыменовании: *i
даст вам значение i
, которое является адресом b
.Так что если вы также разыменовываете что: **(&i)
, это также даст вам (значение) b
.