
128
|
第
5
章
对于有些类型的标签,注释写在不同的位置可能会有不同的效果。
准确地模仿示例程序(包括注释块)
有些标签必须紧接在一个类型的前面(或者对于全局标签来说,需要写
在包定义前面),而有些需要与类型(或包名)隔开至少一个空行。比如:
// +second-comment-block-tag
// +first-comment-block-tag
type Foo struct {
}
历史原因造就了这样区别:以前
Kubernetes
的
API
文档生成器不认识代
码生成标签,并只能输出第一个注释块。因此,第一个注释块中定义的
标签会出现在
API HTML
文档中。
代码生成器解析标签的逻辑也不是一成不变的,并且出错处理的机制也
还不完善。相关的逻辑在更新的版本中会更完善,为了保证一致性就需
要始终精确按照现有的代码来写。一个额外的空行都可能带来不同的行
为。
5.3.1
全局标签
全局标签会写在包的
doc.go
文件中。下面是一个典型的
pkg/apis/
group
/
version
/doc.go
文件:
// +k8s:deepcopy-gen=package
// Package v1 is the v1alpha1 version of the API.
// +groupName=cnat.programming-kubernetes.info
package v1alpha1
这个文件的第一行注释告诉
deepcopy-gen
需要为这个包中的所有类型生成对