我有一个私有结构(实际上不止一个,我为这个例子简化了一点),我有一个公共函数,它满足公共接口。 这个结构是通过工厂方法(NewX风格)创建的:
package godocprivate
type PublicInterface interface {
PublicFunction()
}
type privatestruct struct {
}
func NewPublic() *privatestruct {
ps := &privatestruct{}
return ps
}
// PublicFunction does something to be documented
func (self *privatestruct) PublicFunction() {
}
我无法使工厂方法返回公共接口,因为在我的项目中,返回值还有其他接口要满足。
我确实希望通过godoc记录PublicFunction(),但因为它位于私有结构上,所以它不显示:
是否有任何方法,技巧,解决方法等使得在Godoc中可以看到privatestruct.PublicFunction()?
我的实际用例更严重:我确实有多个私有结构。所有这些都满足PublicInterface,但它们各自的PublicFunction实现的内部工作方式不同,因此它们的文档也需要不同......
答案 0 :(得分:1)
PublicFunction
使用PublicStruct
,其私人字段将与私人文档一起使用。例如,
package godocprivate
type PublicInterface interface {
PublicFunction()
}
type privatestruct struct {
}
// PublicStruct is something to be documented except for private fields
type PublicStruct struct {
privatestruct
}
func NewPublic() *PublicStruct {
ps := &PublicStruct{}
return ps
}
// PublicFunction does something to be documented
func (p *PublicStruct) PublicFunction() {
}
创建PublicStruct
时,每个字段的初始值为零。如果这还不够,请引入工厂布尔值。例如,
package godocprivate
type PublicInterface interface {
PublicFunction()
}
type privatestruct struct {
}
// PublicStruct is something to be documented except for private fields
type PublicStruct struct {
factory bool
privatestruct
}
func NewPublic() *PublicStruct {
ps := &PublicStruct{factory: true}
return ps
}
// PublicFunction does something to be documented
func (p *PublicStruct) PublicFunction() {
if !p.factory {
panic("Use NewPublic")
}
}