获取 go doc 来遵循类型别名和函数变量

问题描述 投票:0回答:1

我正在开发一个包含嵌套包的包来帮助组织我的代码。我的顶级包公开了嵌套在其他包内的一些常用功能的“别名”,就像许多其他项目一样。例如: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 评论的方法。

go comments documentation
1个回答
0
投票

别名是为代码库重构而设计的,因此您将在新的重构代码中获得文档,并用别名替换旧的、可能已弃用的代码。

在您的情况下,

mymodule
将是现有遗留代码使用的旧模块,而
models
将是包含供新代码使用的文档的新包。

所以没有“转发”,并且“后退”文档也不是有意的 - 新代码应该使用新移动的包。

© www.soinside.com 2019 - 2024. All rights reserved.