2013-07-03 2 views

ответ

4

ErrNegativeSqrt - type не переменная. Значения хранятся в переменных.

type ErrNegativeSqrt float64 
// x is a variable of type ErrNegativeSqrt with an initial value of -2 
var x ErrNegativeSqrt = -2 

UPDATE:

The Go Programming Language Specification

Constants

Есть логические константы, руна константы, целые константы, Константы с плавающей точкой, комплексные постоянные, и Строковые константы. Символы, целочисленные, с плавающей запятой и комплексные константы - это , коллективно называемые числовыми константами.

Значение константы представлено руна, целое число с плавающей точкой, мнимых или строка символов, идентификатор обозначающего константой, а постоянного выражения, преобразование с результатом, который является постоянным, или в значение результата некоторых встроенных функций, таких как unsafe.Sizeof применяется к любому значению, кепке или len, примененному к некоторым выражениям, real и imag применяется к комплексной константе и сложению, применяемой к числовым константам. Булевские значения истинности представлены предопределенными константами true и false. Обозначенный идентификатор iota обозначает целочисленную константу .

Числовые константы представляют значения произвольной точности и не переполняют .

Константы могут быть напечатаны или неттипны. Литеральные константы, истинные, ложные, iota и некоторые константные выражения, содержащие только нетипизированные константные операнды, являются нетипизированными.

Постоянной может быть задан тип явно декларацией константы или преобразование или неявно при использовании в объявлении переменной или присвоении или в качестве операнда в выражении.

Conversions

преобразования выражения вида Т (х), где Т представляет собой тип и х это выражение, которое может быть преобразовано в тип Т.

ErrNegativeSqrt(-2) является преобразование. Нетипированная константа -2 преобразуется в тип ErrNegativeSqrt, поскольку в качестве операнда она может быть представлена ​​в ErrNegativeSqrtfloat64 базовом типе.

+0

Да, но почему «ErrNegativeSqrt (-2)» возможен? –

+1

См. Мой пересмотренный ответ. 'ErrNegativeSqrt (-2)' является преобразованием. – peterSO

1

ErrNegativeSqrt (-2) возможно, потому что ErrNegativeSqrt является внутренним элементом float64, который описывается спецификацией как способный удерживать «64-разрядные числа с плавающей запятой IEEE-754».

http://en.wikipedia.org/wiki/IEEE_floating_point

1

Это называется преобразование, смотрите здесь: http://golang.org/ref/spec#Conversions. В нем описывается, как значение может быть создано путем преобразования другого значения в этот тип, когда оно совместимо. И здесь -2 можно представить как float64.

Смежные вопросы