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

在其他包中使用main.go中声明的结构,go,Go,我在main.go中声明了一个结构,如下所示: type Organization struct { ID string `json:"id"` Count int `json:"count"` //node count } 我有一个名为configuration的包,它的函数如下: func foo(org main.Organization) { } 问题是我无法访问main.org。有没有办法访问另一个包中main.go中声明的struct?除非在某些罕见

我在main.go中声明了一个结构,如下所示:

type Organization struct {
    ID    string `json:"id"`
    Count int    `json:"count"` //node count
}
我有一个名为configuration的包,它的函数如下:

func foo(org main.Organization) {

}

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

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

我在去年的一封信上找到了这个解释

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

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

对我来说,这似乎是合理的,但据我所知,这并没有记录在案

一个完整的程序是通过将一个称为主程序包的未导入程序包与它导入的所有程序包进行传递链接而创建的。主包必须具有包名main,并声明一个不带参数且不返回值的函数main


在这两个引号中,除了在某些罕见的情况下,不可能导入主包

我在去年的一封信上找到了这个解释

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

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

对我来说,这似乎是合理的,但据我所知,这并没有记录在案

一个完整的程序是通过将一个称为主程序包的未导入程序包与它导入的所有程序包进行传递链接而创建的。主包必须具有包名main,并声明一个不带参数且不返回值的函数main


在两个引号中,在某些情况下(例如测试用例),您不能从goexcept中的其他包导入主包

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

package mytypes
type Organization struct {
    ID    string `json:"id"`
    Count int    `json:"count"` //node count
}
无论您想在何处使用此结构,例如在main中,都可以导入mytypes并将Organization结构用作mytypes.Organization


或者,您可以将Organization struct移动到配置包中,并在main中使用configuration.Organization。

在某些情况下,例如测试用例,您不能从goexcept中的其他包导入主包

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

package mytypes
type Organization struct {
    ID    string `json:"id"`
    Count int    `json:"count"` //node count
}
无论您想在何处使用此结构,例如在main中,都可以导入mytypes并将Organization结构用作mytypes.Organization


或者,将组织结构移动到配置包中,并在主配置中使用configuration.Organization。

为什么不将组织放在库包中?库包?你能解释一下什么是库包吗?另一个主导入的包。就像配置一样,这是GO的限制吗?为什么不能在main中声明一个结构并在其他包中使用它?为什么不将组织放在库包中?库包?你能解释一下什么是库包吗?另一个主导入的包。就像配置一样,这是GO的限制吗?为什么不能在main中声明一个结构并在其他包中使用它?