```
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()
}
```

- 數據類型
- 數組array
- 切片slice
- 字符串string
- map
- 結構體struct
- 方法func
- 匿名結構體(繼承)
- 字段別名
- 接口interface
- 常量
- 基礎語法
- 循環for
- 遍歷
- 函數func
- defer
- 異常處理error
- 訪問范圍
- 包
- 類型斷言
- 文件
- 打開文件
- 讀取文件
- 寫文件
- 判斷是否存在
- 拷貝文件
- JSON
- 序列化
- 反序列化
- 命令行
- 雜項
- Windows下配置加速
- 相關鏈接
- 占位符
- 隨機數rand
- 單元測試
- goroutine
- 并發和并行
- 協程和主線程
- MPG模式
- 設置CPU數量
- 全局互斥鎖
- 管道
- 示例1
- 示例2
- select
- 異常捕獲
- 反射
- 示例
- 示例-改變值
- 網絡編程
- TCP編程
- 示例一
- redis