为了账号安全,请及时绑定邮箱和手机立即绑定

在其他包中使用 main.go 中声明的结构

在其他包中使用 main.go 中声明的结构

Go
浮云间 2023-04-04 17:26:18
我有一个声明的结构,main.go如下所示:type Organization struct {    ID    string `json:"id"`    Count int    `json:"count"` //node count}我有一个名为的包configuration并具有这样的功能:func foo(org main.Organization) {}问题是我无法访问main.Organization. 有没有办法访问在main.go另一个包中声明的结构?
查看完整描述

2 回答

?
万千封印

TA贡献1891条经验 获得超3个赞

package main除非在某些极少数情况下,否则无法导入。

但是,在另一个主包中导入一个主包是可行的。总结一下:

1) 支持在外部测试中引入主包
2) 支持在主包中引入主包
3)不支持在非主包中引入主包

这对我来说似乎是合理的,但是 AFAIK 没有记录在案。

从语言规范

一个完整的程序是通过将称为主包的单个未导入的包与其导入的所有包可传递地链接起来创建的。主包必须具有包名 main 并声明一个不带参数且不返回任何值的函数 main。

(在两个引号中强调我的)


查看完整回答
反对 回复 2023-04-04
?
梦里花落0921

TA贡献1772条经验 获得超5个赞

你不能从go中的其他包中导入主包(某些情况除外,例如测试用例)。


而是创建一个新目录,例如名为,在此文件夹中创建如下所示的mytypes文件:types.go


package mytypes

type Organization struct {

    ID    string `json:"id"`

    Count int    `json:"count"` //node count

}

无论您想在何处使用此结构,例如在 main an 中,您都可以将该结构import "mytypes"用作Organizationmytypes.Organization


或者,您将Organization结构移动到您的configuration包中并在您的 main 中使用configuration.Organization。


查看完整回答
反对 回复 2023-04-04
  • 2 回答
  • 0 关注
  • 105 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信