package main
import (
“encoding/json”
“fmt”
)
type Monster struct {
Name string
Age int
skill string
}
func main(){
/*
結構體的注意事項和使用細節
4)struct的每個字段上,可以寫上一個tag,該tag可以通過反射機制獲取,常見的使用場景就是序列號的反序列化[舉例説明]
代碼説明;將struct變量進行json處理;
問題:json處理後的字段名也是首字母大寫,這樣和我們是將json后的字符串返回給其他程序使用,比如jquery,php等,那麽可能他們的不習慣這個命名方式,怎麽辦?
解決方案
1)將Monster的字段首字母小寫,這個行不通,你會發現處理後,返回的是空字符串,因爲json.Marshai相當於在其他包訪問monster結構體,你首字母小寫就不能在其包訪問。
2)使用tag標簽來解決,看老師演示
3)結構體進行type重新定義(相當於取別名)Golang認爲是新的數據類型,但是相互間可以強轉
type Student struct{
Name string
Age int
}
type Stu Student
func main(){
var stu1 Student
var stu2 Stu
stu2 =stu1
//正確嗎?錯誤,可以這樣修改stu2=Stu(stu1)//ok
fmt.Println(stu1,stu2)
type integer int
func main(){
var i integer =10
var j int =20
j = i//正確嗎?不可以,修改:j<int(i)
fmt.Println(i,j)
}
4)struct的每個字段上,可以協商一個tag:該tag可以通過反射機制獲取,常見的使用場景就是序列化和反序列化。
舉例
*/
//1.創建一個Monster變量
monster := Monster{"牛魔王",500,"芭蕉扇~"}
//2.將monster變量序列化為json格式字符串
jsonStr,err := json.Marshal(monster)
if err != nil{
fmt.Println("json 處理錯誤",err)
}
fmt.Println("JsonStr",string(jsonStr))
}