如何通过初始化或不初始化来确定结构体的字段为零值



我有一些条件要进行动态查询,没有设置值将被忽略。但我混淆了如何确定值是零值是通过输入(用户(还是不输入(golang设置为我们(

示例:

type User struct {
Age int
}
user := User{ Age : 0 } // query := `Where age = ... ` 
user := User{} // query := `` 

我以前使用过指针和json,这是可行的,但在这种情况下,我无法更改结构。

type User struct {
Age *int `json:"age"`
}
user :=User{}
if user.Age == nil { //not set }

有人能给我想法或关键词吗?感谢

map[string]interface的替代方案可能是具有包装类型(如果可能的话(:


type UserWrapper {
user     User
ageDirty bool
}
func (u UserWrapper) SetAge(age int) {
u.ageDirty = true
u.user.Age = age
}
func (u UserWrapper) GetAge() int {
return u.user.Age
}
func (u UserWrapper) AgeSet() bool {
return u.ageDirty
}

它使意图更加清晰,即使直接改变的结构应该更好

最新更新