结构体可见性
结构体中字段大写开头表示可公开访问,小写表示私有(仅在定义当前结构体的包中可访问)
- 不管是结构体还是结构体字段名,大写可以公开访问
- 小写则只能当前的包内访问
JSON序列化
JSON(JavaScript Object Notation)
是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。JSON
键值对是用来保存JS
对象的一种方式
- 键值对中的
键名
写在前面,用双引号
包裹起来 - 键值之间使用冒号分开
- 多个键值对之间用英文逗号分开
如何将json
数据和go
语言格式数据之间进行转换❔
Go---->JSON:json. Marshal
1 | data, err := json.Marshal(c1) |
-
JSON--->GO:json.Unmarshal
1
2
3
4
5
6var c class // c2是解析出来存放数据的位置
err = json.Unmarshal([]byte(jsonStr), &c)
if err != nil{
fmt.Println("json unmarshal failed, err:", err)
return
}
1 | package main |
Tag标签
当后端语言是Go
语言,如果前后端的命名出现冲突,可以使用tag
来解决问题。Tag
是结构体的元信息,可以在运行的时候通过反射的机制读取出来。 Tag
在结构体字段的后方定义,由一对反引号包裹起来,具体的格式如下:
1 | `k1:"v1" k2:"v2"` //键值对组成 |
标签的组成部分
- 由一个或者多个键值对组成
- 键和值之间使用冒号
:
分开 - 值用双引号
""
括起来 - 多个键值对之间用空格分开
key
和value
之间不要有空格
Attention:
为结构体编写Tag
时,必须严格遵守键值对的规则。
1 | //Student 学生 |