没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
golang如何使用如何使用struct的的tag属性的详细介绍属性的详细介绍
主要介绍了golang如何使用struct的tag属性的详细介绍,从例子说起,小编觉得挺不错的,现在分享给大家,也
给大家做个参考。一起跟随小编过来看看吧
从一个例子说起
我们经常会碰到下面格式的struct定义:
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
}
这个struct定义一个叫做Person的类型,包含两个域Name和Age;但是在域的后面有神奇的 json:"name" ,这个用来干什么
用?这篇文章试图来解释这个问题。
当golang的对象需要和json做转换的时候,我们就经常用到这个特性。
有两点注意的地方:有两点注意的地方:
1、如果一个域不是以大写字母开头的,那么转换成json的时候,这个域是被忽略的。
$ cat main.go
package main
import (
"fmt"
"encoding/json"
)
type Person struct {
Name string `json:"name"`
age int `json:"age"`
}
func main() {
person := Person { "tom", 12 }
if b, err := json.Marshal(person); err != nil {
fmt.Printf("error: %s", err.Error())
} else {
fmt.Printf("value: %s", b)
}
}
$ go build -o main main.go
$ ./main
value: {"name":"tom"}
我们看到转换成json串之后,name正常输出了,而age被丢弃了,因为age以小写字母开头。
2、如果没有使用 json:"name" tag,那么输出的json字段名和域名是一样的。
$ cat main.go
package main
import (
"fmt"
"encoding/json"
)
type Person struct {
Name string
Age int
}
func main() {
person := Person { "tom", 12 }
if b, err := json.Marshal(person); err != nil {
fmt.Printf("error: %s", err.Error())
} else {
fmt.Printf("value: %s", b)
}
}
$ go build -o main main.go
$ ./main
value: {"Name":"tom","Age":12}
weixin_38607282
- 粉丝: 3
- 资源: 973
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于python编写的Keras深度学习框架开发,利用卷积神经网络CNN,快速识别图片并进行分类
- 最全空间计量实证方法(空间杜宾模型和检验以及结果解释文档).txt
- 5uonly.apk
- 蓝桥杯Python组的历年真题
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 前端开发技术实验报告:内含4四实验&实验报告
- Highlight Plus v20.0.1
- 林周瑜-论文.docx
- 基于MIC+NE555光敏电阻的声光控电路Multisim仿真原理图
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页