Go语言中的struct tag
有时在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: , UserName: "tony"}
- j, _ := json.Marshal(u)
- fmt.Println(string(j))
- // 获取tag中的内容
- t := reflect.TypeOf(u)
- field := t.Elem().Field()
- fmt.Println(field.Tag.Get("json"))
- // 输出:user_id
- fmt.Println(field.Tag.Get("bson"))
- }
Go语言中的struct tag的更多相关文章
- Go语言中的Struct
一.Go语言中没有像C#.Java一样的Class,只有Struct这样的结构体.Go语言使用type关键字来定义一个类型. 如下: type User struct { Name string Ag ...
- C语言中的struct和typedef struct<转载>
原文:http://www.nowamagic.net/librarys/veda/detail/1785 typedef为C语言的关键字,作用是为一种数据类型定义一个新名字.这里的数据类型包括内部数 ...
- lua中如何识别C语言中的struct
不如用c写比较简单呢 都要在lua中解析好数据结构,不过也可以用ffi呢...proto.lua
- c语言中struct的初始化
C++中的struct已经和class一样,可以用构造函数初始化. C语言中的struct怎么初始化呢? typedef struct _TEST_T { int i; c ...
- C语言中typedef用法
C语言中typedef用法 1. 基本解释 typedef为C语言的关键字,作用是为一种数据类型定义一个新名字.这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等) ...
- C语言中qsort函数用法
C语言中qsort函数用法-示例分析 本文实例汇总介绍了C语言中qsort函数用法,包括针对各种数据类型参数的排序,非常具有实用价值非常具有实用价值. 分享给大家供大家参考.C语言中的qsort ...
- c语言中time相关函数
工作中遇到的函数: int seed = time(NULL); srand(seed); signal(SIGINT, stop); signal(SIGUSR1, sig_usr1); 搜time ...
- 关于C语言中的typedef
在C语言中定义一个结构体,要最好使用typedef,使用typedef,实际上就是为我们的结构体起了一个新的名字,即定义了一个新的类型,在后面书写自己代码的时候,就可以直接使用自己定义的新的类型第一变 ...
- 转]解析C语言中的sizeof
解析C语言中的sizeof 一.sizeof的概念 sizeof是C语言的一种单目操作符,如C语言的其他操作符++.--等.它并不是函数.sizeof操作符以字节形式给出 了其操作数的存储大小.操作数 ...
随机推荐
- ARM三级流水线
title: ARM三级流水线 tags: ARM date: 2018-10-14 16:57:10 --- 参考: ARM指令集E004armproc.chm ARM Architecture R ...
- Struts2_配置文件
1.结果跳转方式 <struts> <constant name="struts.devMode" value="true"></ ...
- HDU 1014(互质数 **)
题意是说从 0 开始每次增加 STEP,然后模 MOD 得到一些数,问是否能得到从 0 到 MOD - 1 的所有数. 只要 STEP 与 MOD 互质就可以满足条件,也就是二者的最大公因数为 1 即 ...
- java项目中文件含义
1. java项目 .project:是工程构建配置文件 .classpath:保存的是项目所用的外部引用包的路径 .settings:记录项目配置变化的记录文件夹 src:sourcefolder项 ...
- python中的顺序表
Python中的list和tuple两种类型采用了顺序表的实现技术,tuple是不可变类型,即不变的顺序表,因此不支持改变其内部状态的任何操作,而其他方面,则与list的性质类似. list的基本实现 ...
- mkdocs 生成帮助文档
简介 MkDocs 可以同时编译多个markdown文件,形成书籍一样的文件.有多种主题供你选择,很适合项目使用. MkDocs 是快速,简单和华丽的静态网站生成器,可以构建项目文档.文档源文件在 M ...
- 开源框架.netCore DncZeus学习(一)npm安装
今天看到一个不错的开源项目DncZeus, https://github.com/lampo1024/DncZeus 整个界面挺漂亮,而且权限做到了按钮级别,功能也较容易扩展,刚好学习VUE纯看文章很 ...
- NPOI导出Excel2007-xlsx
今天在用npoi导出xls时会报错,经过在网上查找资料,找到一篇博客文章介绍的,原文地址https://www.cnblogs.com/spring_wang/p/3160020.html 1.今天再 ...
- 使用 CROSS APPLY 与 OUTER APPLY 连接查询
Ø 前言 日常开发中遇到多表查询时,首先会想到 INNER JOIN 或 LEFT OUTER JOIN 等等,但是这两种查询有时候不能满足需求.比如,左表一条关联右表多条记录时,我需要控制右表的某 ...
- UDP客户/服务器程序所用的套接字函数