我只有一个包main,但我正在构建多个二进制文件:--cmd --program1 --main.go --program2 --main.go--xxx.go--yyy.go--zzz.go我想在xxx.goin 中调用函数program1/main.go。编译器说undeclared name:。我认为我不应该导入该函数,因为它们都在同一个包下main。
1 回答
守候你守候我
TA贡献1802条经验 获得超10个赞
做你想做的事,你需要把文件 xxx.go、yyy.go 和 zzz.go 放到一个内部包中。
这是您应该拥有的目录布局:
--cmd
--program1
--main.go
--program2
--main.go
--internal
--shared
--xxx.go
--yyy.go
--zzz.go
在文件 xxx.go、yyy.go 和 zzz.go 中,您应该package shared在文件的开头有。
在文件 main.go 中,您应该有import "../../internal/shared". 如果您有一个带有完全限定模块名称的 go.mod 文件(例如 github.com/me/project),那么您可以拥有import "github.com/me/project/internal/shared".
一旦你有了这个,你就可以调用共享包的导出函数,例如从 xxx.go 文件,从程序的主文件。请注意,当函数名称的第一个字母是大写字母时,会导出函数。
- 1 回答
- 0 关注
- 179 浏览
添加回答
举报
0/150
提交
取消