8.3. 常量

Go语言中的常量可以没有固定类型(untyped)。我们可以用const和一个 untyped类型的初始值来 定义untyped常量。如果是untyped常量, 那么常量在使用的时候会根据上下文自动进行隐含的类型转换。 这样,可以更自由的使用untyped常量。

  var a uint
  f(a + 1)  // untyped numeric constant "1" becomes typed as uint

untyped类型常量的大小也没有限制。只有在最终使用的地方才有大小的限制。

  const huge = 1 << 100
  f(huge >> 98)

Go没有枚举类型(enums)。作为代替,可以在一个独立的const区域中使用 iota来生成递增的值。如果const中,常量没有初始值则会 用前面的初始化表达式代替。

  const (
      red = iota   // red == 0
      blue         // blue == 1
      green        // green == 2
  )