func (r *Review) Validate() error {
	if r.CardID == "" {
		return errors.New("card id required")
	}
	if _, _, _, err := parseCardID(r.CardID); err != nil {
		return err
	}
	if r.Timestamp.IsZero() {
		return errors.New("timestamp required")
	}
	return nil
}
// Validate validates that all of the data in the review appears valid and self
// consistent. A nil return value means no errors were detected.
Validate validates that all of the data in the review appears valid and self
consistent. A nil return value means no errors were detected.
// Validate validates that all of the data in the review appears valid and self // consistent . A nil return value means no errors were detected .
func (r *Review) Validate() error {
	if r.CardID == "" {
		return errors.New("card id required")
	}
	if _, _, _, err := parseCardID(r.CardID); err != nil {
		return err
	}
	if r.Timestamp.IsZero() {
		return errors.New("timestamp required")
	}
	return nil
}
func ( r * Review ) Validate ( ) error { if r . CardID == " " { return errors . New ( " " ) } if _ , _ , _ , err := parseCardID ( r . CardID ) ; err != nil { return err } if r . Timestamp . IsZero ( ) { return errors . New ( " " ) } return nil }
Validate validates that all of the data in the review appears valid and self
consistent.
Validate validates that all of the data in the review appears valid and self consistent .