为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
湖上湖 2021-10-04 16:35:32
我有一个私有结构(实际上不止一个,我在这个例子中简化了一点)我有一个公共函数,它满足公共接口。这个结构是通过工厂方法(NewX 风格)创建的:package godocprivatetype PublicInterface interface {    PublicFunction()}type privatestruct struct {}func NewPublic() *privatestruct {    ps := &privatestruct{}    return ps}// PublicFunction does something to be documentedfunc (self *privatestruct) PublicFunction() {}我不能让工厂方法返回公共接口,因为在我的项目中还有其他接口要满足返回值。我确实想通过 godoc 记录 PublicFunction(),但因为它位于私有结构上,所以没有显示:有什么方法、技巧、解决方法等可以使 privatestruct.PublicFunction() 在 Godoc 中可见?我的实际用例甚至更严重:我确实有不止一个私有结构。它们都满足PublicInterface,但是它们各自的PublicFunction实现的内部工作原理不同,因此它们的文档也需要不同......
查看完整描述

1 回答

?
心有法竹

TA贡献1866条经验 获得超5个赞

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")

    }

}


查看完整回答
反对 回复 2021-10-04
  • 1 回答
  • 0 关注
  • 171 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信