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