我只有一個包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 關注
- 195 瀏覽
添加回答
舉報
0/150
提交
取消