struct成员变量标签(Tag)说明

要比较详细的了解这个,要先了解一下golang的基础,在golang中,命名都是推荐都是用驼峰方式,并且在首字母大小写有特殊的语法含义:包外无法引用。但是由经常需要和其它的系统进行数据交互,例如转成json格式,存储到mongodb啊等等。这个时候如果用属性名来作为键值可能不一定会符合项目要求。

==示例代码:

package main

import (
"encoding/json"
"fmt"
"reflect"
) type User struct {
UserId int `json:"user_id"`
UserName string `json:"user_name"`
} func main() { // 输出Json格式
u := &User{UserId:, UserName:"alex"}
j, _ := json.Marshal(u)
fmt.Println(string(j))
// 输出内容:{"user_id":1,"user_name":"alex"} // 获取Tag中的内容
t := reflect.TypeOf(u)
field := t.Elem().Field()
field2 := t.Elem().Field()
fmt.Println(field.Tag.Get("json"))
// 输出内容:user_id
fmt.Println(field2.Tag.Get("json"))
// 输出内容:user_name
}

Go struct tag的更多相关文章

  1. 引用 U-boot给kernel传参数和kernel读取参数—struct tag

    引用 清风徐徐 的 U-boot给kernel传参数和kernel读取参数—struct tag U-boot会给Linux Kernel传递很多参数,如:串口,RAM,videofb等.而Linux ...

  2. 【linux】U-BOOT与linux kernel通信: struct tag

      欢迎转载,转载时需保留作者信息. 邮箱:tangzhongp@163.com 博客园地址:http://www.cnblogs.com/embedded-tzp Csdn博客地址:http://b ...

  3. Go语言中的struct tag

    有时在Go的结构体定义时会看到这样的形式: type User struct { UserId int `json:"user_id" bson:"b_user_id&q ...

  4. 使用 Go 的 struct tag 来解析版本号字符串

    各类软件的版本号定义虽然都不尽相同,但是其基本原理基本上还是相通的:通过特写的字符对字符串进行分割.我们把这一规则稍作整理,放到 struct tag 中,告诉解析器如何解析,下面就以 semver ...

  5. golang struct tag

    golang可以在struct中的每个字段,写上一个tag.这个tag可以通过反射的机制获取到,最常用的场景就是json序列化和反序列化 package main import ( "enc ...

  6. [Golang] struct Tag说明

    在处理json格式字符串的时候,经常会看到声明struct结构的时候,属性的右侧还有小米点括起来的内容.形如 type User struct { UserId int `json:"use ...

  7. 什麼是 struct,union,enumeration 的 tag ?

    struct tag { member-list }; union tag { member-list }; enum tag { member-list }; union test1 { int a ...

  8. step2 uboot tag存储主要部分代码

      cmd_bootm.c //传递给内核的参数      int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])     ...

  9. struct和typedef struct在c++中的用法

    #include<iostream> using namespace std; struct test{ int a; }test; //定义了结构体类型test,声明变量时候直接test ...

随机推荐

  1. visualvm远程监控jvm两种配置方法

    参考:http://blog.itpub.net/17203031/viewspace-765810 一.Jstatd RMI远程监控方法 VisualVM在监控本地JVM的时候是很方便的.只要应用程 ...

  2. 第4步:创建RAC共享磁盘组

    方法一:使用asmdevices(推荐使用,但不适用EMC Powerpath) )查看硬盘的SCSI号,两个机器认到的/dev/sda对应在实际的物理盘可能不是一块,但scsi号肯定是完全一致的. ...

  3. 如何用MathType编辑圆圈符号

    数学往往是由很多的公式和符号组成的,一些用户朋友在写文章需要用到一些符号的时候,发现一般的编辑器很难满足一些比较专业的需求.这个时候就需要一款专业的数学公式编辑器.公式编辑器MathType就是这样诞 ...

  4. php的下载

    前言:你的坚持,终将美好! 今天给大家说一下,php的下载,由于php的下载本身就是一个压缩包,解压缩后即可使用.所以,解压缩的过程不再赘述. 第一步:在浏览器的地址栏输入:http://www.ph ...

  5. iOS面试题--Model层--数据持久化储存方案

    数据持久化储存方案有哪些? iOS中的数据持久化方式,基本上有以下四种:属性列表.对象归档.SQLite3和Core Data 1.属性列表涉及到的主要类:NSUserDefaults,一般 [NSU ...

  6. cocos2D 虚拟摇杆Joystick功能实现

        @implementation InputLayer        - (id)init    {        if(self = [super init])        {        ...

  7. eclipse下设置tomcat,修改Java代码不必重启tomcat

    1.本文目的:用tomcat进行web开发时,修改Java代码往往要重启代码,当工程较大启动较慢时,严重影响效率,本文通过eclipse下tomcat开发和发布web程序时,对一些Java代码一般修改 ...

  8. Python 通过字符串调用函数、接近属性

    需求:传入的是函数名.属性名,想通过字符串调用函数,接近属性. 通过字符串接近.变动属性 变量:model_name, field_name # 获取 model model = AppConfig. ...

  9. springcloud zuul

    zuul是springcloud的API网关. 入口也是springmvc的DispatcherServlet. 实际的handler是ZuulController,通过handleRequest方法 ...

  10. ubuntu下MySQL无法启动Couldn't find MySQL server (/usr/bin/mysqld_safe)”

    一台虚拟测试机,启动的时候,报上述错误,从这个报错来看,多半是因为读取到了另外的my.cnf导致的 那么,my.cnf放置在什么地方? 可以通过如下指令获取到 root@mysql:~# mysqld ...