GO序列化與反序列化
定義
序列化:把物件轉化為可傳輸的位元組序列的過程稱為序列化
反序列化:把位元組序列還原為物件的過程稱為反序列化。
--
作為開發者,序列化和反序列化一直是我們老生常談的問題,也是非常瑣碎但是重要的知識點。對於序列化與反序列化,我這裡強烈推薦一篇部落格,你可以從中更加深入瞭解他們。
這裡作為待補充部分,後面學習完RPC後會重新更新這部分內容。
這裡僅提供go中最簡單的序列化方式:
package main
import (
"encoding/json"
"fmt"
)
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
// 建立一個 Person 結構體例項
person := Person{Name: "Alice", Age: 30}
// 將 Person 結構體序列化為 JSON 格式的位元組切片
jsonBytes, err := json.Marshal(person)
if err != nil {
fmt.Println("Failed to serialize:", err)
return
}
// 列印 JSON 字串
fmt.Println("Serialized JSON:", string(jsonBytes))
// 將 JSON 字串反序列化為 Person 結構體
var newPerson Person
err = json.Unmarshal(jsonBytes, &newPerson)
if err != nil {
fmt.Println("Failed to deserialize:", err)
return
}
// 列印反序列化後的 Person 結構體
fmt.Println("Deserialized Person:", newPerson)
}
結果
Serialized JSON: {"name":"Alice","age":30}
Deserialized Person: {Alice 30}