Как проверить, было ли значение bool из структуры изменено на false или оно уже было ложным
type user_account struct {
ID string `sql:"type:uuid;default:uuid_generate_v4()"`
Gender_Identity_id string `sql:"type:uuid;default:uuid_generate_v4()"`
Email string
Name string
LastName string
Password string
BirthDate string `sql:"type:date;default:current_time"`
AssignedSex bool
Show bool
Sleep bool
Disabled bool
}
Если вы отправляете объект user_account без установки значения сна в значение true, значение автоматически будет ложным, мне нужно знать, действительно ли значение было установлено как ложное или имеет значение false, поскольку оно не было установлено
func UpdateUser(userUpdate user_account) {
db, err := gorm.Open("postgres", "user=postgres password=06maneco dbname=HookTest sslmode=disable")
var user user_account
if err != nil {
fmt.Println(err)
} else {
db.Where("id = ?", userUpdate.ID).First(&user)
if userUpdate.Name != user.Name {
user.Name = userUpdate.Name
} else if userUpdate.Password != "" {
user.Password = userUpdate.Password
} else if userUpdate.Gender_Identity_id != "" {
user.Gender_Identity_id = userUpdate.Gender_Identity_id
} else if userUpdate.Email != "" {
user.Email = userUpdate.Email
} else if userUpdate.Show != user.Show {
user.Show = userUpdate.Show
}
db.Save(&user)
}
1 ответ
Решение
Для Sleep
поле вы можете использовать указатель, который также может быть ноль:
type userAccount struct {
Sleep *bool
}
Теперь вы можете проверить это:
func check(u userAccount) {
if u.Sleep == nil {
// not set
} else if !(*u.Sleep) {
// set to false
} else {
// set to true
}
}
Проверьте это на детской площадке: https://play.golang.org/p/8EIs_yIC0mw.