在 Go 中通过 Godoc 记录私有结构上的公共方法

我有一个私有结构(实际上不止一个,我在这个例子中简化了一点)我有一个公共函数,它满足公共接口。这个结构是通过工厂方法(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(),但因为它位于私有结构上,所以没有显示:

http://img3.mukewang.com/615abce70001cbb409720736.jpg

有什么方法、技巧、解决方法等可以使 privatestruct.PublicFunction() 在 Godoc 中可见?

我的实际用例甚至更严重:我确实有不止一个私有结构。它们都满足PublicInterface,但是它们各自的PublicFunction实现的内部工作原理不同,因此它们的文档也需要不同......



湖上湖
浏览 175回答 1
1回答

心有法竹

PublicFunction使用PublicStruct其私有字段将是私有的私有文档。例如,package godocprivatetype PublicInterface interface {    PublicFunction()}type privatestruct struct {}// PublicStruct is something to be documented except for private fieldstype PublicStruct struct {    privatestruct}func NewPublic() *PublicStruct {    ps := &PublicStruct{}    return ps}// PublicFunction does something to be documentedfunc (p *PublicStruct) PublicFunction() {}当PublicStruct被创建它最初具有用于每个场的零个值。如果这还不够,请引入工厂布尔值。例如,package godocprivatetype PublicInterface interface {    PublicFunction()}type privatestruct struct {}// PublicStruct is something to be documented except for private fieldstype PublicStruct struct {    factory bool    privatestruct}func NewPublic() *PublicStruct {    ps := &PublicStruct{factory: true}    return ps}// PublicFunction does something to be documentedfunc (p *PublicStruct) PublicFunction() {    if !p.factory {        panic("Use NewPublic")    }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go