有没有办法在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()
}

这样就不必导出类型。


以上是有没有办法在Golang中使用未导出的类型作为参数来创建函数?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>