code: func NoZeroValues(i interface{}, k string) (s []string, es []error) {
  	if reflect.ValueOf(i).Interface() == reflect.Zero(reflect.TypeOf(i)).Interface() {
  		switch reflect.TypeOf(i).Kind() {
  		case reflect.String:
  			es = append(es, fmt.Errorf("%s must not be empty", k))
  		case reflect.Int, reflect.Float64:
  			es = append(es, fmt.Errorf("%s must not be zero", k))
  		default:
  			// this validator should only ever be applied to TypeString, TypeInt and TypeFloat
  			panic(fmt.Errorf("can't use NoZeroValues with %T attribute %s", i, k))
  		}
  	}
  	return
  }
docs: // NoZeroValues is a SchemaValidateFunc which tests if the provided value is
  // not a zero value. It's useful in situations where you want to catch
  // explicit zero values on things like required fields during validation.