```
package main
import (
"encoding/json"
"fmt"
)
type Monster struct {
Name string `json:"name1"`// 使用别名,转换后为别名,可以将首字母大写的字段转换为小写,否则小写无法输出
Age int
Birthday string
Sal float64
}
func testStruct() {
m := Monster{
Name: "牛魔王",
Age: 60,
Birthday: "2022-01-02",
Sal: 200.22,
}
data, err := json.Marshal(&m) //\[\]byte
if err != nil {
fmt.Printf("序列化错误,err=%v\n", err)
}
fmt.Printf("monster序列化后=%v\n", string(data))
}
func testMap() {
var a map[string]interface{}
a = make(map[string]interface{})
a["name"] = "红孩儿"
a["age"] = "30"
data, err := json.Marshal(a) //[]byte
if err != nil {
fmt.Printf("序列化错误,err=%v\n", err)
}
fmt.Printf("monster序列化后=%v\n", string(data))
}
func testSlice() {
var slice []map[string]interface{}
var m1 map[string]interface{}
m1 = make(map[string]interface{})
m1["name"] = "红孩儿"
m1["age"] = "30"
slice = append(slice, m1)
var m2 map[string]interface{}
m2 = make(map[string]interface{})
m2["name"] = "牛魔王"
m2["age"] = "4399"
slice = append(slice, m2)
data, err := json.Marshal(slice) //\[\]byte
if err != nil {
fmt.Printf("序列化错误,err=%v\n", err)
}
fmt.Printf("monster序列化后=%v\n", string(data))
}
func main() {
testStruct()
testMap()
testSlice()
}
```
![](https://img.kancloud.cn/0a/84/0a8428a48c0db8f41aebf06a22a18eb2_588x67.png)
- 数据类型
- 数组array
- 切片slice
- 字符串string
- map
- 结构体struct
- 方法func
- 匿名结构体(继承)
- 字段别名
- 接口interface
- 常量
- 基础语法
- 循环for
- 遍历
- 函数func
- defer
- 异常处理error
- 访问范围
- 包
- 类型断言
- 文件
- 打开文件
- 读取文件
- 写文件
- 判断是否存在
- 拷贝文件
- JSON
- 序列化
- 反序列化
- 命令行
- 杂项
- Windows下配置加速
- 相关链接
- 占位符
- 随机数rand
- 单元测试
- goroutine
- 并发和并行
- 协程和主线程
- MPG模式
- 设置CPU数量
- 全局互斥锁
- 管道
- 示例1
- 示例2
- select
- 异常捕获
- 反射
- 示例
- 示例-改变值
- 网络编程
- TCP编程
- 示例一
- redis