var (
HOME = os.Getenv("HOME")
USER = os.Getenv("USER")
GOROOT = os.Getenv("GOROOT")
)
这些变量的类型是在编译期间还是在运行时确定的?
Go是一种静态类型语言,所以它必须在编译时发生。
Spec:变量声明:
如果存在类型,则每个变量都被赋予该类型。否则,每个变量在赋值时被赋予相应初始化值的类型。如果该值是无类型常量,则首先将其隐式转换为默认类型;如果它是一个未类型化的布尔值,则首先将其隐式转换为类型
bool
。预先声明的值nil
不能用于初始化没有显式类型的变量。var d = math.Sin(0.5) // d is float64 var i = 42 // i is int var t, ok = x.(T) // t is T, ok is bool var n = nil // illegal
在您的示例中,由于os.Getenv()
的返回类型是string
,因此所有这些变量都将是string
类型。