Golang如何检查struct栏位int是否已设定?

时间:2019-02-19 18:01:29

标签: go

使用golang脚本,我在下面具有结构类型和json

结构

admin

type Admin struct {
   Id string `json:"id"`
   Status int `json:"status"`
}

json

jsonData

{
    "id": "uuid"
}

当我对上面的jsonData使用json.Unmarshal(jsonData, &admin)时没有status

admin.Status的默认值为0。我如何检查admin.Status是否未设置?

非常感谢!

1 个答案:

答案 0 :(得分:3)

Status字段中使用一个指针:

package main

import (
    "fmt"
    "encoding/json"
)

type Admin struct {
   Id string `json:"id"`
   Status *int `json:"status"`
}

func main() {
    b := []byte(`{"id": 1}`)
    r := new(Admin)
    json.Unmarshal(b, r)
    fmt.Println(r.Status)

    b2 := []byte(`{"id": 1, "status": 2}`)
    r2 := new(Admin)
    json.Unmarshal(b2, r2)
    fmt.Println(*r2.Status)
}

当它不在Json中时,指针将为nil。