Мне нужно проверить правильность значения struct, и это означает, что мне нужно проверять каждое поле отдельно, что легко для небольшого числа небольших структур, но мне было интересно, есть ли лучший способ сделать это. Вот как я это делаю прямо сейчас.
type Event struct {
Id int
UserId int
Start time.Time
End time.Time
Title string
Notes string
}
func (e Event) IsValid() error {
if e.Id <= 0 {
return errors.New("Id must be greater than 0")
}
if e.UserId <= 0 {
return errors.New("UserId must be greater than 0")
}
if e.End <= e.Start {
return errors.New("End must be after Start")
}
if e.Start < time.Now() {
return errors.New("Cannot create events in the past")
}
if e.Title == "" {
return errors.New("Title cannot be empty")
}
return nil
}
Является ли это идиоматическим способом проверки значений полей в структуре? Это выглядит громоздким.