我已经创建了填充结构图的逻辑,它正在按预期工作。 现在,我想将该功能移至包中。像这样
package returnperson
func Person() map[string]personstruct {
//do stuff
return people
}
我在函数Person的主体中定义了persontruct,但是第2行抛出了以下错误:
未定义:personstruct(2,1)
我已经研究过,似乎没有办法纠正这个问题。 在此先感谢您的帮助。
答案 0 :(得分: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
。
只是想一些建议......