GoLang struct的tag

GoLang获取struct的tag内容,  这是tag,可以被reflect API访问;beego的ORM中也通过tag来定义参数的。

获取tag的内容是利用反射包来实现的。示例代码能清楚的看懂!

package main

import (   "fmt"   "reflect")

type Job struct {   AlarmStatus      *string        `json:"alarm_status" name:"alarm_status"`   CPUTopology      string        `json:"cpu_topology" name:"cpu_topology"`}

func main(){   a := "abc"   s := Job{&a,"hello"}   st := reflect.TypeOf(s)   field := st.Field(1)   fmt.Println(field.Tag.Get("json"), field.Tag.Get("name"))}
package mainimport (    "fmt"    "reflect" // 这里引入reflect模块)

type User struct {    Name   string "user name" //这引号里面的就是tag    Passwd string "user passsword"}

func main() {    user := &User{"chronos", "pass"}    s := reflect.TypeOf(user).Elem() //通过反射获取type定义    for i := 0; i < s.NumField(); i++ {        fmt.Println(s.Field(i).Tag) //将tag输出出来    }}
package main

import (    "fmt"    "reflect")

func main() {    type S struct {         F string `species:"gopher" color:"blue"`     }

     s := S{}     st := reflect.TypeOf(s)     field := st.Field(0)     fmt.Println(field.Tag.Get("color"), field.Tag.Get("species"))

 }
时间: 2024-08-05 20:25:40

GoLang struct的tag的相关文章

GoLang获取struct的tag

GoLang获取struct的tag内容:beego的ORM中也通过tag来定义参数的. 获取tag的内容是利用反射包来实现的.示例代码能清楚的看懂! 1 package main 2 import ( 3 "fmt" 4 "reflect" // 这里引入reflect模块 5 ) 6 type User struct { 7 Name string "user name" //这引号里面的就是tag 8 Passwd string "

golang struct的使用

Go struct tag深入理解 喜欢本站的朋友可以收藏本站,或者加入QQ群:172816590,我们大家一起来交流技术! 欢迎来到梁钟霖个人博客网站.本个人博客网站提供最新的站长新闻,各种互联网资讯. 还提供个人博客模板,最新最全的java教程,java面试题.在此我将尽我最大所能将此个人博客网站做的最好! 谢谢大家,愿大家一起进步! Go的struct声明允许字段附带Tag来对字段做一些标记.该Tag不仅仅是一个字符串那么简单,因为其主要用于反射场景,reflect包中提供了操作Tag的方

golang中的struct标签tag

这个以前用beego时涉及过,时间久了,就忘了. 现在k8s里的controller,一样用了这个语法, 再拾起来吧. http://www.01happy.com/golang-struct-tag-desc-and-get/ 但这个帖子中,bson的tag没有测试成功,再议吧. package main import ( "encoding/json" "fmt" "reflect" ) func main() { type User str

golang struct扩展函数参数命名警告

今天在使用VSCode编写golang代码时,定义一个struct,扩展几个方法,如下: package storage import ( "fmt" "github.com/zsy619/gcommon" ) //ChunkFooter 块Footer type ChunkFooter struct { ChunkDataTotalSize int } //NewChunkFooter 创建一个ChunkFooter func NewChunkFooter(chu

golang struct转map

struct转map package main import ( "fmt" "reflect" "time" ) type User struct { Id int64 Username string Password string Logintime time.Time } func Struct2Map(obj interface{}) map[string]interface{} { t := reflect.TypeOf(obj) v

golang struct里面的字段,或者slice排序

accounts := []users.Account{}Admin.DB.Preload("CurrencyObj").Where("member_id = ?", record.(*users.Member).ID).Find(&accounts)sort.Slice(accounts, func(i int, j int) bool { return accounts[i].Balance > accounts[j].Balance})retur

golang学习之struct

结构体定义的一般方式如下: type identifier struct { field1 type1 field2 type2 ... } type T struct {a, b int} 也是合法的语法,它更适用于简单的结构体. var t *T t = new(T) 变量 t 是一个指向 T的指针,此时结构体字段的值是它们所属类型的零值,使用 new 函数给一个新的结构体变量分配内存,它返回指向已分配内存的指针. 无论变量是一个结构体类型还是一个结构体类型指针,都使用同样的 选择器符(se

Go语言之 Struct Tag

在上一篇介绍Go反射的时候,提到了如何通过反射获取Struct的Tag,这一篇文章主要就是介绍这个的使用和原理,在介绍之前我们先看一下JSON字符串和Struct类型相互转换的例子. JSON字符串对象转换 func main() {    var u User    h:=`{"name":"张三","age":15}`    err:=json.Unmarshal([]byte(h),&u)        if err!=nil{  

Golang 入门 : 结构体(struct)

Go 通过类型别名(alias types)和结构体的形式支持用户自定义类型,或者叫定制类型.试图表示一个现实世界中的实体. 结构体由一系列命名的元素组成,这些元素又被称为字段,每个字段都有一个名称和一个类型. 结构体的目的就是把数据聚集在一起,以便能够更加便捷地操作这些数据.结构体的概念在 C 语言里很常见,被称为 struct.Golang 中的结构体也是 struct.Go 语言中没有类的概念,因此在 Go 中结构体有着更为重要的地位.结构体是复合类型(composite types),当