我有一些条件要进行动态查询,没有设置值将被忽略。但我混淆了如何确定值是零值是通过输入(用户(还是不输入(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
}
它使意图更加清晰,即使直接改变的结构应该更好