付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【扩展资料】Go语言中的Tag我们可以通过Tag来增强结构体的定义,Tag会带上一些meta信息,在本文中我们将通过几个例子来深入了解Tag的用法。###Struct是由一组field组成,每个field包括了名字(可选)packagemainimport"fmt"typepackagemainimport"fmt"typeT1struct{f1}typeT2struct }funcmain()t:=T2{T1{"foo"},1,2,fmt.Println(t.f1)//foofmt.Println(t.T1.f1)//foofmt.Println(t.f2)//1}fieldT1是一个嵌入型field,它并没有字段名。Field定义可以像f3和f4一###typetypeTstructstring"fstring`ff4,f5int64`ffourand}不管是rawstringinterpretedstring都可以用来当tag。如果field定义时候两个名字公用一个属性,那么这个tag会被附在两个名字上,像f4,f5一###Tag在运行时可以通过reflection)typeTstructstring"fstring`ff4,f5int64`ffourand}funcmain()t:=reflect.TypeOf(T{})f1,_:=t.FieldByName("f1")fmt.Println(f1.Tag)//fonef4,_:=fmt.Println(f4.Tag)//ffourandfivef5,_:=t.FieldByName("f5")fmt.Println(f5.Tag)//ffourandfive}设置一个空tag和不设置tagtypetypeT{f1``f2}}funcmain()t:=f1,_:=t.FieldByName("f1")fmt.Printf("%q\n",f1.Tag)//""f2,_:=t.FieldByName("f2")fmt.Printf("%q\n",f2.Tag)//""}Tags可以由键值对来组成,通过空格符来分割键值—。如果Lookup或者GetLookup回传两个值—typetypeTstructfuncmain()t:=f,_:=fmt.Printf("%s,%t\n",v,ok)//1,fmt.Printf("%s,%t\n",v,ok)//,fmt.Printf("%s,%t\n",v,ok)//,}v,ok=v,ok=v,ok:=}fstring`one:"1"Get方法只是简单的包装了以下Lookupfuncfunc(tagStructTag)Get(keystring){v,_:=tag.Lookup(key)returnv}将结构体的值转化成其他的类型可通过TagtypetypeT1structfint}typeT2structfint}t1:=vart2T2Tag最常用的大概就是在marshaling)funcmain()typeTstructF1intF2int`json:"f_2,omitempty"`F3int`json:"f_3,omitempty"`F4int`json:"-"`}t:=T{1,0,2,b,err:=json.Marshal(t)iferr!=nil{}fmt.Printf("%s\n",b)//}比如typetypeBlogstructstring[]TagSharedTags[]Tag}typeTagstructIDuint`gorm:"primary_key"`ValuestringBlogs[]*Blog}funccompareTags(tags[]Tag,contents[]string)boolvartagContentsfor_,tag:=rangetagstagContents=append(tagContents,}}gogo的编译器不会强行要求你使用合理的tags。但是govetpackagemaintypepackagemaintypeTstruct{fstring"onetwo}funcmain()>govettags.go:4:s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年石家庄信息工程职业学院单招职业倾向性测试题库及参考答案详解1套
- 2026年郑州理工职业学院单招职业倾向性考试题库及参考答案详解
- 心力衰竭患者利尿剂抵抗处理方案
- 钟山区大湾镇招聘社区网格员考试试题附答案详解
- 2026年税务合规性审核函3篇
- 芗城区东铺头街道招聘社区网格员考试试题附答案详解
- 资兴市兴宁镇招聘社区网格员考试试题附答案详解
- 2026年石家庄信息工程职业学院单招职业适应性考试题库及参考答案详解一套
- 2026年西安汽车职业大学单招职业技能测试题库附答案详解
- 2026年辽宁民族师范高等专科学校单招职业适应性考试题库带答案详解
- 广州市2026年5月普通高三毕业班考前冲刺题(二)历史试卷(含答案)
- 2026年供销合作社笔试题库答案
- 2026年软考-信息系统项目管理师真题及答案解析
- 产科子痫应急预案演练脚本
- 儿童肝功能异常鉴别诊断总结2026
- 2026年全国安康杯安全知识竞赛题库含答案详解(突破训练)
- 2025版《csco非小细胞肺癌诊疗指南》
- 2026年担保业务岗位高频面试题包含详细解答
- 2026年上海市杨浦区初三语文二模试卷及答案
- 初中化学睡前默写72天
- 无尘车间生产工艺操作规范手册
评论
0/150
提交评论