猿问

在不同目录但在同一目录下找不到函数

我只有一个包main,但我正在构建多个二进制文件:


--cmd

   --program1 

     --main.go

   --program2

     --main.go

--xxx.go

--yyy.go

--zzz.go

我想在xxx.goin 中调用函数program1/main.go。编译器说undeclared name:。


我认为我不应该导入该函数,因为它们都在同一个包下main。


尚方宝剑之说
浏览 180回答 1
1回答

守候你守候我

做你想做的事,你需要把文件 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 文件,从程序的主文件。请注意,当函数名称的第一个字母是大写字母时,会导出函数。
随时随地看视频慕课网APP

相关分类

Go
我要回答