【发布时间】:2016-06-10 19:57:08
【问题描述】:
我在为 api 编写 golang 库时遇到问题。布尔值的 json 方面导致了问题。
假设对于 api 调用,布尔值的默认值为 true。
如果我这样做了
SomeValue bool `json:some_value,omitempty`
并且我没有通过库设置值,该值将设置为true。如果我在库中将该值设置为 false,则 omitempty 表示 false 值为空值,因此该值将通过 api 调用保持为 true。
让我们去掉省略号,让它看起来像这样
SomeValue bool `json:some_value`
现在我遇到了相反的问题,我可以将值设置为 false,但如果我不设置该值,那么即使我希望它为 true,该值也会为 false。
编辑:如何保持不必将值设置为 true 同时也能够将值设置为 false 的行为?
【问题讨论】:
-
等等,有什么问题?
-
当您需要区分未设置值和零值时,请使用指针。
-
我添加了问题。让我知道这是否有意义@Jerrybibo
-
做到了。谢谢@JimB