腾讯微群加入QQ群

 找回密码
 加入我们

!connect_header_login!

!connect_header_login_tip!

搜索
查看: 276|回复: 0

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

[复制链接]
发表于 2016-8-4 13:37:08 | 显示全部楼层 |阅读模式

在读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"}


0
0

转自:http://blog.csdn.net/rually/article/details/50527056
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

QQ|手机版|Archiver|小黑屋|一起疯|苦咖啡 ( 新ICP备12000197号  

GMT+8, 2018-1-17 05:17 , Processed in 0.049704 second(s), 11 queries , Memcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表