golang怎麼判斷是否傳遞了數值

起因

今天在做項目的時候有個需求就是狀態必須傳遞,在golang中接收到json參數解析到結構體中數值類型不傳遞有一個默認的0,但是狀態也可以傳遞0,怎麼來判斷是否傳遞了這個數值呢?

解決辦法

方法一:

  • 在解析之前給結構體默認值,案例如下:
var jsonBlob = []byte(`[
{"Name": "Platypus", "Order": "Monotremata"}
]`)

type Animal struct {
Name string
Order string
ID
int
}

animals := &Animal{ID: -9999}
err := json.Unmarshal(jsonBlob, animals)
if err != nil {
fmt.Println("error:", err)
}
fmt.Printf("%+v", animals)

方法二:

  • 使用額外的結構體+指針類型,如果不傳遞解析爲nil而不是0,如下:
type NodeXXX struct {
Date string `json:"date"`
Count *int32 `json:"count"`
}

方法三:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章