首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在外部包中使用文件中的函数

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

Stack Overflow用户
提问于 2019-12-25 10:46:31
回答 2查看 128关注 0票数 0

我是Golang初学者,正在为如何使用外部包中的函数而苦苦挣扎

下面是我的源代码,如下所示

代码语言:javascript
复制
-samplego
--pkg
--src
---github.com
----pkg1
-----a.go
-----pkg2
-------b.go

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

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

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2019-12-25 17:19:03

也许,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中的函数;

票数 0
EN

Stack Overflow用户

发布于 2019-12-25 11:00:37

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

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59474814

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档