猿问

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

我有一个声明的结构,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另一个包中声明的结构?


浮云间
浏览 139回答 2
2回答

万千封印

package main除非在某些极少数情况下,否则无法导入。但是,在另一个主包中导入一个主包是可行的。总结一下:1) 支持在外部测试中引入主包2) 支持在主包中引入主包3)不支持在非主包中引入主包这对我来说似乎是合理的,但是 AFAIK 没有记录在案。从语言规范一个完整的程序是通过将称为主包的单个未导入的包与其导入的所有包可传递地链接起来创建的。主包必须具有包名 main 并声明一个不带参数且不返回任何值的函数 main。(在两个引号中强调我的)

梦里花落0921

你不能从go中的其他包中导入主包(某些情况除外,例如测试用例)。而是创建一个新目录,例如名为,在此文件夹中创建如下所示的mytypes文件:types.gopackage mytypestype Organization struct {    ID    string `json:"id"`    Count int    `json:"count"` //node count}无论您想在何处使用此结构,例如在 main an 中,您都可以将该结构import "mytypes"用作Organizationmytypes.Organization或者,您将Organization结构移动到您的configuration包中并在您的 main 中使用configuration.Organization。
随时随地看视频慕课网APP

相关分类

Go
我要回答