kubernetes学习笔记----- Go语言中structTag

rually · · 2638 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

在读kubernetes源码的时候,读到https://github.com/kubernetes/kubernetes/blob/master/pkg/apis/extensions/types.go   k8s的type的时候,遇到这样一段代码,

// represents a scaling request for a resource.
type Scale struct {
	unversioned.TypeMeta `json:",inline"`
	// Standard object metadata; More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata.
	api.ObjectMeta `json:"metadata,omitempty"`

	// defines the behavior of the scale. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status.
	Spec ScaleSpec `json:"spec,omitempty"`

	// current status of the scale. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status. Read-only.
	Status ScaleStatus `json:"status,omitempty"`
}

然后后面的 `` 里面的 json字符串,我就不明白了


这是Go语言的structTag 


1 干什么用的? 

如果希望手动配置结构体的成员和JSON字段的对应关系,可以在定义结构体的时候给成员打标签:

使用omitempty熟悉,如果该字段为nil或0值(数字0,字符串"",空数组[]等),则打包的JSON结果不会有这个字段。


2 怎么用啊 ?   http://blog.csdn.net/tiaotiaoyly/article/details/38942311点击打开链接

 type Message struct {
	Name string `json:"msg_name"`       // 对应JSON的msg_name
	Body string `json:"body,omitempty"` // 如果为空置则忽略字段
	Time int64  `json:"-"`              // 直接忽略字段
}
var m = Message{
	Name: "Alice",
	Body: "",
	Time: 1294706395881547000,
}
data, err := json.Marshal(m)
if err != nil {
	fmt.Printf(err.Error())
	return
}
fmt.Println(string(data))

Output:
{"msg_name":"Alice"}



有疑问加站长微信联系(非本文作者)

本文来自:CSDN博客

感谢作者:rually

查看原文:kubernetes学习笔记----- Go语言中structTag

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2638 次点击  
加入收藏 微博
上一篇:Go lang学习
下一篇:Go GOPATH设置
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传