Go语言同包同目录跨文件读变量报错:undefined: My_str
Go语言同包变量未定义问题排查与解决
问题原因
File B的变量声明存在语法错误:
- 全局变量的声明和赋值不能拆分为两行独立语句(这种写法会被编译器判定为新的未声明变量)
- 第二行的
My_str = "hi"存在缩进错误,进一步导致编译器无法识别该语句是对上方已声明变量的赋值
修复方案
有两种正确的写法可以解决这个问题:
方案1:合并变量声明与赋值
修改File B为:
package main // 完整声明+赋值,或简化为 var My_str = "hi"(Go会自动推导类型) var My_str string = "hi"
方案2:使用init函数初始化全局变量
如果需要更复杂的初始化逻辑,可以借助init函数:
package main var My_str string func init() { My_str = "hi" }
修改完成后,执行go run .命令,程序将正常输出hi。
内容的提问来源于stack exchange,提问作者Reza Motaee
相关产品推荐
相关产品推荐

