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

Aks*_*ood 1 go

我有一个声明的结构main.go,如下所示:

type Organization struct {
    ID    string `json:"id"`
    Count int    `json:"count"` //node count
}
Run Code Online (Sandbox Code Playgroud)

我有一个名为的包,configuration并具有如下函数:

func foo(org main.Organization) {

}
Run Code Online (Sandbox Code Playgroud)

问题是我无法访问main.Organization.有没有办法访问main.go另一个包中声明的struct ?

Ada*_*ith 5

package main除非在某些罕见的情况下,否则无法导入.

我在去年发布的邮件列表上找到了这个解释.

但是,在另一个主程序包中导入主程序包有效.总结一下:

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

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

语言规范

一个完整的程序是由联单,创造了未汇入包称为主包与所有它进口的包装,传递性.主包必须具有包名称main,并声明一个不带参数的函数main并且不返回任何值.

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