Go语言类型推断发生时机?示例变量类型是编译期还是运行期确定?
Go语言类型推断相关问题解答
1. Go语言的类型推断发生阶段
Go的类型推断完全发生在编译阶段,不会在运行期执行任何类型推断相关的逻辑。
2. 示例代码变量类型确定阶段
你给出的代码如下:
var ( HOME = os.Getenv("HOME") USER = os.Getenv("USER") GOROOT = os.Getenv("GOROOT") )
这三个变量的类型是编译期间确定的,具体原因如下:
- 标准库
os包的Getenv方法签名是固定的:func Getenv(key string) string,它的返回值类型永远为string,编译阶段就能明确右侧赋值表达式的返回类型。 - 变量的实际取值是运行阶段调用
os.Getenv从系统环境变量中读取的,但类型和变量的运行时取值无关,编译阶段就已经通过右侧表达式的返回类型,将三个变量的类型推断为string并固定。
内容的提问来源于stack exchange,提问作者Jerry Anderson
相关产品推荐
相关产品推荐

