Go的marshal unmarshal
生活随笔
收集整理的這篇文章主要介紹了
Go的marshal unmarshal
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1.定義
marshal:輸入數(shù)據(jù),轉(zhuǎn)化為[]byte
入?yún)?#xff1a;我們輸入的數(shù)據(jù),類型為任意類型
出參:返回數(shù)據(jù)為結(jié)果和錯誤? 結(jié)果為[]byte []uint8類型? 全部都是數(shù)字,? ?使用os.Stdout.Write(b)將ascii轉(zhuǎn)化為字符
unmarshal:將[]byte轉(zhuǎn)化為任意我們規(guī)定的類型
入?yún)?#xff1a;第一個參數(shù)是我們輸入的數(shù)據(jù),類型是[]byte? uint8類型的切片;第二個參數(shù)是接受器可以為任何類型數(shù)據(jù),自定義
出參:錯誤
目的:便于存儲傳遞
2.marshal
package mainimport ("encoding/json""fmt""os""reflect")func main() {type ColorGroup struct {ID int `json:"dd達到"`Name stringColors []string}group := ColorGroup{ID: 1,Name: "Reds",Colors: []string{"Crimson", "Red", "Ruby", "Maroon"},}b, err := json.Marshal(group)fmt.Println(reflect.TypeOf(b))fmt.Println(b)if err != nil {fmt.Println("error:", err)}// 會把ascii碼轉(zhuǎn)化為我們對應(yīng)的值os.Stdout.Write(b) }// {"userid":1,"Name":"Reds","Colors":["Crimson","Red","Ruby","Maroon"]}3.unmarshal
package mainimport ("encoding/json""fmt""reflect" )type Animal struct {Name stringOrder stringsite string }func main() {// json在go中是字符串的類型// 但是json在go中其實是類似于結(jié)構(gòu)體的類型// 所以json字符串與結(jié)構(gòu)體都向一個方向進行轉(zhuǎn)化,那就是byte切片var jsonBlob = []byte(`[{"Name": "aaa", "Order": "bbb"}]`)fmt.Println(reflect.TypeOf(jsonBlob))fmt.Println(jsonBlob)var animals Animalfmt.Println(reflect.TypeOf(animals))// 會按照animala的方式進行編碼// 要求// 第一個參數(shù)[]byte// 第二個參數(shù)任何類型type Phone interface {}var aa Phoneerr := json.Unmarshal(jsonBlob, &aa)if err != nil {fmt.Println("error:", err)}// %+v會打印出鍵來fmt.Printf("%+v", aa)fmt.Println(reflect.TypeOf(aa))}// [{Name:Platypus Order:Monotremata} {Name:Quoll Order:Dasyuromorphia}]?
總結(jié)
以上是生活随笔為你收集整理的Go的marshal unmarshal的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎样拆墙壁开关插座的面板?
- 下一篇: Go常用包