我是这里的 Golang 初学者,正在为如何使用外部包中的函数而苦苦挣扎这里我有源代码作为下面的这棵树-samplego--pkg--src---github.com----pkg1-----a.go-----pkg2-------b.go在 b.go 中,我想使用 a.go 中的函数,但编译器告诉我,即使我将函数声明为 public(第一个字符为大写字母),该函数也是未定义的。我想知道在使用之前是否必须从 a.go 导入任何东西,但我想我会得到循环导入,因为在 a.go 中也使用来自 b.go 的函数。
2 回答
守着星空守着你
TA贡献1799条经验 获得超8个赞
也许,a.go 和 pkg2 是平的,所以,你为什么不改变你的文件视图,比如:
-samplego
--pkg
--src
---github.com
----pkg1
-----a.go
-----b.go
如果你想保持你的文件结构,你应该使用 mod,等我一段时间。
-samplego
--pkg
--src
---github.com
----pkg1
-----a.go
-----pkg2
-------b.go
下面的命令: bash
cd $(SAMPLEGO_PATH) // change path to samplego exists
go mod init samplego
在b.go中,导入“samplego/src/github.com/pkg1”,然后通过pkg1.function从a.go导入函数;在a.go中,导入“samplego/src/github.com/pkg1/pkg2”,然后通过pkg2.function从b.go导入函数;
眼眸繁星
TA贡献1873条经验 获得超9个赞
不幸的是,直到 Go2 才允许循环依赖。你想要做的事情可以用当前的 Go 版本来完成。您可以重构代码以创建一个包 C,其中包含必须导出的数据结构和方法。请记住,您需要使用go mod init YOUR_MODEL_NAME
,然后您可以使用import YOUR_MODEL_NAME/package_name
. 请记住,每个文件夹只能包含一个包。
- 2 回答
- 0 关注
- 89 浏览
添加回答
举报
0/150
提交
取消