Адресация значения
В Go некоторые значения являются адресуемыми, то есть, существует адрес, по которому их можно найти. Все переменные адресуемы, а все константы не адресуемы.
Узнать подробнее об адресатах и указателях ты можешь по ссылке.
Явные преобразования непостоянных числовых значений
В Go два типизированных значения двух разных базовых типов не могут быть присвоены друг другу. Типы целевого и исходного значений в назначении должны быть идентичными, если оба значения являются базовыми. Если тип исходного базового значения не совпадает с типом целевого базового значения, то исходное значение должно быть явно преобразовано в тип целевого значения.
Как упоминалось выше, непостоянные целые значения могут быть преобразованы в строки. Здесь мы вводим еще два допустимых случая преобразования непостоянных числовых значений.
- Непостоянные значения с плавающей запятой и целые числа могут быть явно преобразованы в любые другие типы с плавающей запятой и целые числа.
- Не константные комплексные значения могут быть явно преобразованы в любые другие комплексные типы.
В отличие от преобразования постоянных чисел, при преобразовании непостоянных чисел допускается переполнение. А при преобразовании непостоянного значения с плавающей запятой в целое число также допускается округление. Если непостоянное значение с плавающей запятой не переполняет целочисленный тип, дробная часть значения с плавающей запятой будет отброшена по направлению к нулю при преобразовании в целочисленный тип.
Во всех не константных преобразованиях, включающих значения с плавающей запятой или комплексные значения, если тип результата не может представлять значение, то преобразование завершается успешно, но значение результата зависит от реализации.
В следующем примере предполагаемые неявные преобразования в строке 7 и строке 18 не работают. Явные преобразования в строке 5 и строке 16 также запрещены.
Мы можем думать, что значение a в строке 3 неявно преобразуется в его тип по умолчанию ( float64), так что тип b вычитается как float64.