Golang是一門非常強大的程式語言,它提供了許多內建類型和函數,幫助程式設計師快速編寫高效的程式碼。其中,結構體類型是非常常用的一種。在處理網路通訊、資料儲存和傳輸等方面,我們通常需要將結構體類型資料編碼成二進位資料或序列化成JSON格式的字串進行傳輸。本文將介紹一些Golang函數的結構體類型的編碼和解碼技巧。
在Golang中,結構體類型的定義需要使用type關鍵字和struct關鍵字。例如,下面定義了一個Person結構體類型,包含了Name和Age兩個欄位:
type Person struct { Name string Age int }
p := Person{"Tina", 28} jsonData, _ := json.Marshal(p) fmt.Println(string(jsonData)) // {"Name":"Tina","Age":28}
jsonStr := `{"Name":"Tina", "Age": 28}` var p Person _ = json.Unmarshal([]byte(jsonStr), &p) fmt.Println(p) // {Tina 28}
buf := new(bytes.Buffer) binary.Write(buf, binary.LittleEndian, &p) byteData := buf.Bytes() fmt.Printf("%x ", byteData) // 54696e61001c0000
var q Person err := binary.Read(bytes.NewReader(byteData), binary.LittleEndian, &q) if err != nil { fmt.Println(err) } fmt.Println(q) // {Tina 28}
var byteData bytes.Buffer enc := gob.NewEncoder(&byteData) err := enc.Encode(&p) if err != nil { fmt.Println(err) } fmt.Printf("%x ", byteData.Bytes()) // 026864073544696e61001c
dec := gob.NewDecoder(&byteData) var q Person err := dec.Decode(&q) if err != nil { fmt.Println(err) } fmt.Println(q) // {Tina 28}
以上是Golang函數的結構體類型的編碼和解碼技巧的詳細內容。更多資訊請關注PHP中文網其他相關文章!