我正在开发一个包含嵌套包的包来帮助组织我的代码。我的顶级包公开了嵌套在其他包内的一些常用功能的“别名”,就像许多其他项目一样。例如:https://github.com/cloudevents/sdk-go/blob/main/v2/alias.go
一切都很好。然而,go 文档似乎并没有附加到别名,而仅是原始定义。
这是一个最小的例子:
// NEW FILE: <module_root>/models/models.go
package models
type MyType struct {
// comment
num int
// other comment
text string
}
// Repeats MyType.text MyType.num times
func (t *MyType) Repeat() string {
rStr := ""
for i := 0; i < t.num; i++ {
rStr += t.text
}
return rStr
}
// Create MyType with specified arguments
func NewMyType(num int, text string) MyType {
return MyType{
num: num,
text: text,
}
}
// NEW FILE: <module_root>/alias.go
package mymodule
import models
type MyType = models.MyType
var NewMyType = models.NewMyType
有趣的是,go 文档似乎显示
MyType
有方法 Repeat()
,但没有像查看 models.MyType
时那样显示它的结构定义和相关注释。此外,仅显示 NewMyType
的函数签名,而不显示 models.NewMyType
上存在的 go 文档。
如何公开此类型别名和“函数别名”var 上已定义的 go 文档?
我也尝试过查看有关 go docs 的文档,但没有看到任何关于此的注释或“复制”/“转发”go doc 评论的方法。
别名是为代码库重构而设计的,因此您将在新的重构代码中获得文档,并用别名替换旧的、可能已弃用的代码。
在您的情况下,
mymodule
将是现有遗留代码使用的旧模块,而models
将是包含供新代码使用的文档的新包。
所以没有“转发”,并且“后退”文档也不是有意的 - 新代码应该使用新移动的包。