代码之家  ›  专栏  ›  技术社区  ›  Akshay Sood

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

go
  •  1
  • Akshay Sood  · 技术社区  · 6 年前

    我有一个在中声明的结构 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 回复  |  直到 6 年前
        1
  •  5
  •   Adam Smith    6 年前

    package main 除非在某些罕见的情况下。

    mailing list 追溯到去年。

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

    1) 支持在外部测试中导入主包

    3) 不支持在非主包中导入主包

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

    language spec

    一个完整的程序是通过连接一个, 不重要的 包称为主包,包含它所导入的所有包。主包必须具有包名main,并声明一个不带参数且不返回值的函数main。

        2
  •  2
  •   nos    6 年前

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

    mytypes ,在此文件夹中创建文件 types.go

    package mytypes
    type Organization struct {
        ID    string `json:"id"`
        Count int    `json:"count"` //node count
    }
    

    import "mytypes" Organization 结构组件 mytypes.Organization

    组织 结构到你的 configuration 包装与使用 configuration.Organization 在你的主要领域。