一尘不染

初始化const变量

go

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

const KILO = math.Pow10(3)

因为我有错误

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

阅读 184

收藏
2020-07-02

共1个答案

一尘不染

常量声明不能包含函数调用(某些例外,请参见下文),它们必须在编译时进行评估,而函数调用是在运行时进行的。

引用规格:常量:

常数值由符文整数浮点数虚数字符串文字表示,标识符表示常数,常数表达式,结果为常数的转换或某些内置结果的值函数,例如unsafe.Sizeof应用于任何值,caplen应用于某些表达式real以及imag应用于complex常量,以及应用于数字常量的复数。

并引用Spec:常量表达式:

常量表达式只能包含常量操作数,并 在编译时求值

请注意,有一小套(内置)函数可以在诸如的常量声明中调用unsafe.Sizeof(),但通常您不能这样做。

所以就用

const Kilo = 1000  // Integer literal

要么

const Kilo = 1e3   // Floating-point literal

有关Go常量的广泛介绍,请阅读博客文章:Constants

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

var Kilo = math.Pow10(3)
2020-07-02