在我的应用程序中,我有一个结构体,我为其定义了一个New函数来创建实例,因为字段的零值没有意义。另外,我没有导出结构。所以创建的唯一方法是通过New.
var goodPerson = person.New("James", "Tran")
goodPerson.PrintFullName()
Run Code Online (Sandbox Code Playgroud)
在调用方,我不知道如何创建一个将未导出类型作为参数的函数,以便我仍然可以访问这种类型的导出方法。
func doBadThingToGoodPeople(goodPerson <???>) {
goodPerson.PrintFullName()
}
Run Code Online (Sandbox Code Playgroud)
如果你能指出我的方向,我将不胜感激。
您可以使用一个接口:
type FullNameSupport interface {
PrintFullName()
}
func doBadThingToGoodPeople(goodPerson FullNameSupport) {
goodPerson.PrintFullName()
}
Run Code Online (Sandbox Code Playgroud)
这样就不必导出类型。