关于Go语言,自定义结构体标签的一个妙用.

原创 2015年07月10日 13:32:27

在Go中首字母大小写,决定着这此变量是否能被外部调用,

例如:在使用标准库的json编码自定一的结构的时候:

<pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" font-weight:600; color:#000080;">package</span><span style=" color:#c0c0c0;"> </span>main

import (
    "encoding/json"
    "fmt"
)

type T struct {
    name string
    Age  int
}

func main() {
    var info T = T{"fyxichen", 24}
    fmt.Println("编码前:",info)
    b, _ := json.Marshal(info)
    fmt.Println("编码后:",string(b))
}


运行结果是:

编码前: {fyxichen 24}

编码后: {"Age":24} 在这里name的值并未被编码,原因接收首字母是小写,外部不能调用导致的.


当我们用json和外部API进行交互的时候,别的程序语言不像Go这样用大小写来控制变量的作用域.所以下面这个标签的使用,会用起来更舒服.

package main

import (
	"encoding/json"
	"fmt"
)

type T1 struct {
	Name string
	Age  int
}
type T2 struct {
	Name string `json:"name"`
	Age  int    `json:"age"`
}

func main() {
	var info1 T1 = T1{"fyxichen", 24}
	var info2 T2 = T2{"fyxichen", 24}
	b, _ := json.Marshal(info1)
	fmt.Println("Struct1:", string(b))
	b, _ = json.Marshal(info2)
	fmt.Println("Struct2:", string(b))
}

运行结果:

Struct1 :{"Name":"fyxichen","Age":24}

Struct2 :{"name":"fyxichen","age":24}


版权声明:本文为博主原创文章,交流邮箱czxichen@163.com,交流群:259693140(此群不允许闲聊)

go struct 自定义标签获取

想获取 struct  字段中的自定义标签。网上毛线资料没有。算了。自己看手册慢慢搞了 package main import ( "fmt" "reflect" ) type Test st...
  • liangguangchuan
  • liangguangchuan
  • 2016年07月29日 09:43
  • 646

go - struct类型

struct类型 1. 概述   与C语言struct一样,与java/php等class类似,在Go中,用于扩展类型,面向对象编程(本部分暂未做详细介绍)等   声明格式:(是类型的组合) t...
  • chuangrain
  • chuangrain
  • 2013年07月15日 18:06
  • 17669

关于Go语言,自定义结构体标签的一个妙用.

在Go中首字母大小写,决定着这此变量是否能被外部调用, 例如:在使用标准库的json编码自定一的结构的时候: package main import (     "encoding/jso...
  • fyxichen
  • fyxichen
  • 2015年07月10日 13:32
  • 2675

Go语言核心之美 3.4-Struct结构体

struct结构体也是一种聚合的数据类型,结构体中可以有零个或多个任意类型的值-结构体的成员。用来演示struct的一个经典案例就是公司的员工信息,每条员工信息都包含:员工编号,姓名,住址,出生日期,...
  • abv123456789
  • abv123456789
  • 2016年03月25日 17:46
  • 10595

Go语言中struct Tag

type Message struct { Name string `json:"msg_name"` // 对应JSON的msg_name Body string...
  • zhuwei622
  • zhuwei622
  • 2017年08月14日 18:22
  • 230

golang的命名规范及大小写的访问权限

1、golang的命名需要使用驼峰命名法,且不能出现下划线 2、golang中根据首字母的大小写来确定可以访问的权限。无论是方法名、常量、变量名还是结构体的名称,如果首字母大写,则可以被其他的包访问...
  • skh2015java
  • skh2015java
  • 2017年01月10日 18:00
  • 4947

Golang中的tag

package mainimport ( "encoding/json" "fmt" "reflect" )func main() { type User struct...
  • asd05txffh
  • asd05txffh
  • 2016年09月05日 23:02
  • 1578

golang数据结构的标签

golang的结构体不止只有结构类型,还有一个标签, 当两个相同结构类型,相同数值都相同的时候, 标签不同, 其俩对象也不相同。 使用方式为反射机制。 package main import (...
  • Culminate_in
  • Culminate_in
  • 2017年05月02日 14:30
  • 268

go结构体的使用

go中的struct可以实现oop中的类、方法。go语言中的struct成员可以是任何类型,如普通类型、复合类型、函数、struct、interface等。 入门 //定义 typ...
  • davidsu33
  • davidsu33
  • 2016年10月19日 14:34
  • 1693

golang入门--struct Tag的语法

今天想用xorm连接数据库做一个项目,发现xorm的结构体和数据库表的映射关系的建立是通过struct Tag来实现的。所以有必要了解下Tag的语法和作用。 看代码秒懂: 1 package m...
  • a172742451
  • a172742451
  • 2016年04月21日 18:46
  • 2399
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于Go语言,自定义结构体标签的一个妙用.
举报原因:
原因补充:

(最多只允许输入30个字)