在go語言中,我們通常使用json來進行數(shù)據(jù)的序列化和反序列化,在此過程中可能會遇到一些類型無法被轉換為json的情況,下面我們一一介紹。
//golang中無法被序列化的數(shù)據(jù)類型如下 //1. chan類型 ch := make(chan int) json.Marshal(ch) //報錯 //2. complex64和complex128類型 c64 := complex(1, 2) json.Marshal(c64) //報錯 c128 := complex128(1+2i) json.Marshal(c128) //報錯 //3.函數(shù)類型 sum := func(x, y int) int { return x + y } json.Marshal(sum) //報錯 //4. interface{}類型 var i interface{} = "hello" json.Marshal(i) //報錯 //5. map類型中鍵的類型必須是string類型 m := map[int]string{1: "a", 2: "b"} json.Marshal(m) //報錯 //6. slice類型中不能含有函數(shù)和不可導出的字段 type person struct { name string age int } p := person{"張三", 18} s := []person{p} json.Marshal(s) //報錯
以上就是在go語言中無法被轉化為json的數(shù)據(jù)類型以及相應的報錯信息。在使用json進行數(shù)據(jù)序列化的時候需要注意這些數(shù)據(jù)類型,確保代碼的正確性。