Как определить, что поле структуры имеет нулевое значение при инициализации или нет? - PullRequest
0 голосов
/ 12 июля 2020

У меня есть условие, при котором нужно сделать динамический запрос c, не заданное значение будет проигнорировано. Но я запутался, как определить нулевое значение - вводом (пользователем) или нет (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 }

кто-нибудь может дать мне идею или ключевые слова? Спасибо

1 Ответ

0 голосов
/ 13 июля 2020

Альтернативой 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
}

Это делает намерения более ясными, даже если лучше изменить структуру напрямую

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...