在 Go 中通过 Godoc 记录私有结构上的 public 方法
Documenting public methods on private structs via Godoc in Go
我有一个私有结构(实际上不止一个,我在这个例子中简化了一点),我有一个 public 函数,它满足 public 接口。
此结构是通过工厂方法(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() {
}
我不能使工厂方法return成为public接口,因为还有其他接口可以在我的项目中对 returned 值感到满意。
我确实想通过 godoc 记录 PublicFunction(),但因为它在私有结构上,所以没有显示:
是否有任何方法、技巧、解决方法等使 privatestruct.PublicFunction() 在 Godoc 中可见?
我的实际用例更为严重:我确实有不止一个私有结构。它们都满足 PublicInterface,但它们各自的 PublicFunction 实现的内部工作原理不同,因此它们的文档也需要不同......
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")
}
}
我有一个私有结构(实际上不止一个,我在这个例子中简化了一点),我有一个 public 函数,它满足 public 接口。 此结构是通过工厂方法(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() {
}
我不能使工厂方法return成为public接口,因为还有其他接口可以在我的项目中对 returned 值感到满意。
我确实想通过 godoc 记录 PublicFunction(),但因为它在私有结构上,所以没有显示:
是否有任何方法、技巧、解决方法等使 privatestruct.PublicFunction() 在 Godoc 中可见?
我的实际用例更为严重:我确实有不止一个私有结构。它们都满足 PublicInterface,但它们各自的 PublicFunction 实现的内部工作原理不同,因此它们的文档也需要不同......
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")
}
}