欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

go json default

關(guān)于golang中json包中的default選項(xiàng),它是一個(gè)比較有用的選項(xiàng),可以在在JSON解碼時(shí)給未定義字段設(shè)置默認(rèn)值。

type Person struct {
Name string `json:"name"`
Age  int    `json:"age"`
}
func main() {
jsonString := `{"name":"Tom"}`
var p Person
err := json.Unmarshal([]byte(jsonString), &p)
if err != nil {
fmt.Println(err)
return
}
// 打印輸出p.Age的默認(rèn)值為0
fmt.Println(p.Age) 
}

在上面的示例中,我們定義了一個(gè)Person結(jié)構(gòu)體,它包含兩個(gè)字段-Name和Age。我們還定義了一個(gè)JSON字符串,僅包含Name字段。我們使用json.Unmarshal解碼JSON字符串并將其賦值給Person結(jié)構(gòu)體。但是,由于JSON字符串不包含Age字段,所以在解碼后,p.Age的默認(rèn)值為0。

為了設(shè)置默認(rèn)值,我們可以使用json包提供的DefaultKey選項(xiàng)。

type Person struct {
Name string `json:"name"`
Age  int    `json:"age" default:"30"`
}
func main() {
jsonString := `{"name":"Tom"}`
var p Person
err := json.Unmarshal([]byte(jsonString), &p)
if err != nil {
fmt.Println(err)
return
}
// 打印輸出p.Age的默認(rèn)值為30
fmt.Println(p.Age) 
}

在上面的示例中,我們?yōu)锳ge字段添加了一個(gè)default選項(xiàng),并將它設(shè)置為30。當(dāng)JSON字符串不包含特定字段的默認(rèn)值時(shí),Unmarshal會(huì)將default的值賦給字段。

Default選項(xiàng)在編寫(xiě)應(yīng)用程序時(shí)非常有用,可以避免因未定義字段而導(dǎo)致的應(yīng)用程序崩潰。