gpt4 book ai didi

json - Go - JSON 验证抛出错误,除非我在结构中使用指针。为什么?

转载 作者:行者123 更新时间:2023-12-02 01:31:59 25 4
gpt4 key购买 nike

这是我的验证结构:

type PostEmail struct {
Username string `json:"username" validate:"required"`
Email string `json:"email" validate:"required"`
IsRefreshEmail *bool `json:"isRefreshEmail" validate:"required"`
}

我用 *bool 指向 IsRefreshEmail 的值。如果我删除指针并尝试在没有它的情况下调用 API,则 API 将抛出错误的语法错误。仅当 bool 值为 false 时才会发生这种情况。如果它是true,即使您删除指针,API 也会正确响应。

为什么会发生这种情况?这是正常的?我无法理解它,我什至不知道我的指针是否做错了。我确信的是,如果我从 bool 中删除 * 并将 false 作为 postman 中字段 isRefreshEmail< 的值插入 API 将抛出异常。

有人可以解释一下吗?谢谢。

最佳答案

bool 值可以表示两个值:falsetrue:

var IsRefreshEmail bool

bool 指针可以表示三个值:falsetruenil:

var IsRefreshEmail *bool

这样做的好处是,您可以将 falsenil 进行比较:

{"email": "hello", "isRefreshEmail": false}
{"email": "hello"}

如果没有指针,上面的两个 JSON 在 Unmarshal 后将是相同的。根据您的情况,您可能不关心这一点。但是如果你需要要知道该值是否被省略,则需要指针。

关于json - Go - JSON 验证抛出错误,除非我在结构中使用指针。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73073571/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com