1 Go的枚舉
1.1 定義常數實作枚舉
◆ 類型别名的形式來聲明類型
◆ iota來自增和自動指派

顯然輸出為2
這樣亦可.
1.2 何時可用iota ,何時又不可用iota呢?
◆ 無狀态且非持久化,可以使用iota
◆ 有狀态或者需要持久化,不能使用iota
1.3 顯式iota定義
定義好之後,值不可再改變!
2 在Go中如何使用JSON
2.1 标準庫内建的JSON包
預設使用的JSON字段名稱是它的Field名稱
2.2 并非任何類型都可序列化
◆ 支援string、 bool、 數字類型、數組和切片、結構體、map
◆ Channel、complex、 function 類型無法進行json序列化
◆ 結構體中的循環資料結構,序列化時不會被處理
2.3 結構體中自定義字段名稱
◆ JSON tag key : name,[omitempty,-]
◆ [string]标記 , 定義bool,浮點,整數類型使用字元串編碼
◆ 臨時添加字段:内嵌結構體,合并多個結構體
2.3.1 序列化示範
- demo代碼-json.go
運作結果
對name進行自定義
可以發現age無法實作序列化導出,将其改為大寫即可
其中的omitempty可以過濾空值(包括0),于是結果中不再包含age資訊
有-不會序列化
去除-即可
整型加上string會以字元串形式序列化
2.3.2 反序列化示範
無法序列化id,是以要求json一定要與結構體中資料類型保持一緻
2.4 高性能JSON庫 - jsoniter [json-iterator]
◆ 快,并且更快
◆ 支援java和go
◆ 百分百相容JSON标準庫, 一行代碼遷移到jsoniter
◆ 安裝: go get github.com/json-iterator/go
3 config 配置
3.1 分類标準
内容
靜态和動态
環境
開發、測試、灰階、生産
形式
本地檔案和分布式服務
格式
ini > properties > yaml > toml > xml > json(推薦度排序)
用途 - 程式/應用級别
◆ 配置檔案命名規範
字首+[-_ ]+功能
◆ 程式級别
可以不分組,比如: boot.ini,config.ini
◆ 應用級别分組
比如app-mysql.properties
環境來變量化配置項
◆ 不同環境使用不同的配置檔案
◆ 變量化因環境不同的可變配置項
3.2 統一配置工具庫 - props 設計
◆ 各種配置源抽象或轉換為key/value結構
◆ 支援prop,ini,zk,consul.etcd,nacos
◆ 支援unmarshal
◆ props配置用戶端工具庫加持+ INI格式
◆ INI檔案由節、鍵、值組成
◆ INI格式三要素 :節、參數(key/value)、注釋
◆ section :方括号包圍,比如: [mysql]
◆ 參數: key=value ,有些工具支援冒号分割
◆ 注釋,使用;,有些編輯器和工具支援#
◆ Section作為分組
◆ props配置用戶端使用完整的key來解釋
◆ 完整的key由Section和參數key組成 , .分割