码迷,mamicode.com
首页 > 其他好文 > 详细

struct tag

时间:2018-06-22 13:37:12      阅读:111      评论:0      收藏:0      [点我收藏+]

标签:运行时   形式   ack   type   相关   port   struct   style   bsp   

有时在Go的结构体定义时会看到这样的形式:

type User struct {
UserId int `json:"user_id" bson:"b_user_id"`
UserName string `json:"user_name" bson:"b_user_name"`
}
注意上述红色部分,这就称之为struct tag 。个人理解struct tag的作用类似于Java的注解的作用,在Go语言中可以通过反射机制在运行时动态获取到struct的tag来实现一些特定功能。
下面列出相关参考代码:
package main

import (
    "encoding/json"
    "fmt"
    "reflect"
)

type User struct {
    UserId   int    `json:"user_id" bson:"b_user_id"`
    UserName string `json:"user_name" bson:"b_user_name"`
}

func main()  {

    u := &User{UserId: 1, UserName: "tony"}
    j, _ := json.Marshal(u)
    fmt.Println(string(j))

    // 获取tag中的内容
    t := reflect.TypeOf(u)
    field := t.Elem().Field(0)
    fmt.Println(field.Tag.Get("json"))
    // 输出:user_id
    fmt.Println(field.Tag.Get("bson"))
}

 

struct tag

标签:运行时   形式   ack   type   相关   port   struct   style   bsp   

原文地址:https://www.cnblogs.com/hzhuxin/p/9212633.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!