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

  1. 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语言中可以通过反射机制在运行时动态获取到structtag来实现一些特定功能。
    下面列出相关参考代码:
  1. package main
  2.  
  3. import (
  4. "encoding/json"
  5. "fmt"
  6. "reflect"
  7. )
  8.  
  9. type User struct {
  10. UserId int `json:"user_id" bson:"b_user_id"`
  11. UserName string `json:"user_name" bson:"b_user_name"`
  12. }
  13.  
  14. func main() {
  15.  
  16. u := &User{UserId: , UserName: "tony"}
  17. j, _ := json.Marshal(u)
  18. fmt.Println(string(j))
  19.  
  20. // 获取tag中的内容
  21. t := reflect.TypeOf(u)
  22. field := t.Elem().Field()
  23. fmt.Println(field.Tag.Get("json"))
  24. // 输出:user_id
  25. fmt.Println(field.Tag.Get("bson"))
  26. }

Go语言中的struct tag的更多相关文章

  1. Go语言中的Struct

    一.Go语言中没有像C#.Java一样的Class,只有Struct这样的结构体.Go语言使用type关键字来定义一个类型. 如下: type User struct { Name string Ag ...

  2. C语言中的struct和typedef struct<转载>

    原文:http://www.nowamagic.net/librarys/veda/detail/1785 typedef为C语言的关键字,作用是为一种数据类型定义一个新名字.这里的数据类型包括内部数 ...

  3. lua中如何识别C语言中的struct

    不如用c写比较简单呢 都要在lua中解析好数据结构,不过也可以用ffi呢...proto.lua

  4. c语言中struct的初始化

    C++中的struct已经和class一样,可以用构造函数初始化. C语言中的struct怎么初始化呢? typedef struct _TEST_T {        int i;        c ...

  5. C语言中typedef用法

    C语言中typedef用法 1. 基本解释 typedef为C语言的关键字,作用是为一种数据类型定义一个新名字.这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等) ...

  6. C语言中qsort函数用法

    C语言中qsort函数用法-示例分析    本文实例汇总介绍了C语言中qsort函数用法,包括针对各种数据类型参数的排序,非常具有实用价值非常具有实用价值. 分享给大家供大家参考.C语言中的qsort ...

  7. c语言中time相关函数

    工作中遇到的函数: int seed = time(NULL); srand(seed); signal(SIGINT, stop); signal(SIGUSR1, sig_usr1); 搜time ...

  8. 关于C语言中的typedef

    在C语言中定义一个结构体,要最好使用typedef,使用typedef,实际上就是为我们的结构体起了一个新的名字,即定义了一个新的类型,在后面书写自己代码的时候,就可以直接使用自己定义的新的类型第一变 ...

  9. 转]解析C语言中的sizeof

    解析C语言中的sizeof 一.sizeof的概念 sizeof是C语言的一种单目操作符,如C语言的其他操作符++.--等.它并不是函数.sizeof操作符以字节形式给出 了其操作数的存储大小.操作数 ...

随机推荐

  1. ARM三级流水线

    title: ARM三级流水线 tags: ARM date: 2018-10-14 16:57:10 --- 参考: ARM指令集E004armproc.chm ARM Architecture R ...

  2. Struts2_配置文件

    1.结果跳转方式 <struts> <constant name="struts.devMode" value="true"></ ...

  3. HDU 1014(互质数 **)

    题意是说从 0 开始每次增加 STEP,然后模 MOD 得到一些数,问是否能得到从 0 到 MOD - 1 的所有数. 只要 STEP 与 MOD 互质就可以满足条件,也就是二者的最大公因数为 1 即 ...

  4. java项目中文件含义

    1. java项目 .project:是工程构建配置文件 .classpath:保存的是项目所用的外部引用包的路径 .settings:记录项目配置变化的记录文件夹 src:sourcefolder项 ...

  5. python中的顺序表

    Python中的list和tuple两种类型采用了顺序表的实现技术,tuple是不可变类型,即不变的顺序表,因此不支持改变其内部状态的任何操作,而其他方面,则与list的性质类似. list的基本实现 ...

  6. mkdocs 生成帮助文档

    简介 MkDocs 可以同时编译多个markdown文件,形成书籍一样的文件.有多种主题供你选择,很适合项目使用. MkDocs 是快速,简单和华丽的静态网站生成器,可以构建项目文档.文档源文件在 M ...

  7. 开源框架.netCore DncZeus学习(一)npm安装

    今天看到一个不错的开源项目DncZeus, https://github.com/lampo1024/DncZeus 整个界面挺漂亮,而且权限做到了按钮级别,功能也较容易扩展,刚好学习VUE纯看文章很 ...

  8. NPOI导出Excel2007-xlsx

    今天在用npoi导出xls时会报错,经过在网上查找资料,找到一篇博客文章介绍的,原文地址https://www.cnblogs.com/spring_wang/p/3160020.html 1.今天再 ...

  9. 使用 CROSS APPLY 与 OUTER APPLY 连接查询

    Ø  前言 日常开发中遇到多表查询时,首先会想到 INNER JOIN 或 LEFT OUTER JOIN 等等,但是这两种查询有时候不能满足需求.比如,左表一条关联右表多条记录时,我需要控制右表的某 ...

  10. UDP客户/服务器程序所用的套接字函数