初始化const变量

时间:2018-02-28 11:36:11

标签: go const

如何使用KILO类型初始化const变量?

const KILO = math.Pow10(3)

因为我有错误

const initializer math.Pow10(3) is not a constant

1 个答案:

答案 0 :(得分:7)

常量声明不能包含函数调用(有一些例外,见下文),它们必须在编译时在运行时执行函数调用时进行评估。

引自Spec: Constants:

  

常量值由runeintegerfloating-pointimaginarystring文字表示,表示常量的标识符,{ {3}},constant expression,结果为常量,或某些内置函数的结果值,例如unsafe.Sizeof应用于任何值cap或{{1已应用于conversionlenreal应用于imag常量和复数应用于数字常量。

引用some expressions

  

常量表达式可能只包含Spec: Constant expressions:个操作数,并且在编译时进行评估

请注意,有一小组(内置)函数可以在complex等常量声明中调用,但通常你不能这样做。

所以只需使用

unsafe.Sizeof()

或者

const Kilo = 1000  // Integer literal

有关Go常量的详尽介绍,请阅读博文:constant

如果由于某种原因你需要调用一个函数,你不能将它存储在常量中,它必须是Constants,例如:

const Kilo = 1e3   // Floating-point literal

另请参阅相关的variable