包返回结构图

时间:2018-03-20 19:57:51

标签: dictionary go struct

我已经创建了填充结构图的逻辑,它正在按预期工作。 现在,我想将该功能移至包中。像这样

package returnperson
func Person() map[string]personstruct {
   //do stuff
   return people
}

我在函数Person的主体中定义了persontruct,但是第2行抛出了以下错误:

  

未定义:personstruct(2,1)

我已经研究过,似乎没有办法纠正这个问题。 在此先感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

这里有一些关于将某些内容提取到包中的提示:

  1. 只有包装级别上带有大写字母的函数,变量和类型才能从"外部" (其他包裹或主要)

  2. 公共函数应该只返回公共类型

  3. 在您的情况下,您说personstruct是在函数Person中定义的。如果您希望它是函数的返回值,那是不可能的。您需要在包级别上定义它。它也应该导出,因为导出的函数使用它。

    这是一个示例:

    package returnperson
    
    // PersonStruct defines ...
    type PersonStruct struct {
        // fields
    }
    
    // Person does ...
    func Person() map[string]PersonStruct {
        var people = map[string]PersonStruct{}
        //do stuff
        return people
    }
    

    - 编辑 -

    我还建议调用包本身person并将其设置为管理一个人,这意味着此包中的主要项目将是一个名为Person的结构。 returnperson更像是一个函数名。

    包也可以是人员列表(切片/地图)。那么也许你想把它称为personlist,包的主要主题是管理一个主要结构的人员列表,可能叫PersonList

    只是想一些建议......