7.4 结构体tag

本篇学习 Go 结构体 tag 的基本作用与写法,并能在 JSON 序列化中使用字段标签。

字数 401 字

结构体 tag

概念说明

结构体 tag 是写在字段后的元信息字符串,常用于告诉框架或库如何处理字段。
最常见场景是 encoding/json:通过 tag 指定 JSON 字段名。

语法/规则

  1. tag 写在字段类型后面,使用反引号包裹。
  2. 常见格式为 key:"value",例如 json:"name"
  3. tag 不会改变字段本身类型,只影响特定库的行为。
  4. 字段要想被 encoding/json 处理,字段名本身需大写导出。

基础示例(JSON 字段命名)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
package main

import (
	"encoding/json"
	"fmt"
)

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

func main() {
	student := Student{
		Name: "阿斌",
		Age:  21,
	}

	byteData, _ := json.Marshal(student)
	fmt.Println(string(byteData))
}

输出结果:

1
{"name":"阿斌","age":21}

常见错误

  1. 把 tag 写成双引号而不是反引号,导致语法错误。
  2. 字段名小写未导出,即使写了 tag 也不会被 JSON 库处理。
  3. 误以为 tag 会自动校验数据格式,tag 只提供元信息,不做业务校验。
使用 Hugo 构建
主题 StackJimmy 设计 由 Hobin 魔改
载入天数...载入时分秒...
发表了 0 篇文章 · 发表了 46 篇笔记 · 总计 2 万 5 千字(其中笔记 25104 字)