使用外部包中文件中的函数



我是Golang初学者,正在努力使用外部包中的函数

在这里,我有源代码,如下所示

-samplego
--pkg
--src
---github.com
----pkg1
-----a.go
-----pkg2
-------b.go

在 b.go 中,我想使用 a.go 中的函数,但编译器告诉我,即使我将函数声明为 public(第一个字符为大写字母(,该函数也是未定义的。

我想知道我是否必须在使用之前从 a.go 导入任何东西,但我想我会得到循环导入,因为在 a.go 中也使用 b.go 的功能。

谢谢。

也许,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 导入函数;

不幸的是,在Go2之前不允许循环依赖。您正在尝试执行的操作可以使用当前的 Go 版本进行。您可以重构代码以创建包含必须导出的数据结构和方法的包 C。 请记住,您需要使用go mod init YOUR_MODEL_NAME,然后您可以使用import YOUR_MODEL_NAME/package_name从另一个文件调用该方法(请记住必须导出(。请记住,每个文件夹只能包含一个包。

最新更新