Golang 如何检查 struct field int 是否设置?

标签 go

<分区>

用golang脚本,我下面有一个struct类型和json

结构

admin

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

json

jsonData

{
    "id": "uuid"
}

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

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

非常感谢!

最佳答案

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。

关于Golang 如何检查 struct field int 是否设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54772346/

相关文章:

戈朗 : accessing value in slice of interfaces

ubuntu - 如何从源代码在我的 ubuntu 12.10 上安装 Go

git - 尝试创建一个可以获取的 go.tools 本地仓库

dictionary - 如何在 Go 中创建一流的 map 迭代器?

html - GoLang - GoQuery HTML 插入失败

version-control - Go 的 gofmt 和 diff/VCS 问题?

ssl - 通过 tls.Server 连接读写

postgresql - sqlx.Connect() 卡在 docker alpine :latest 中

mysql - 如何防止 gorm 忽略 .Updates() 子句中 `UpdatedAt` 字段的值?

database - 如何向 PostgreSQL 插入 JSON 数据