本文整理汇总了Golang中gnd/la/util/structs.Tag.Optional方法的典型用法代码示例。如果您正苦于以下问题:Golang Tag.Optional方法的具体用法?Golang Tag.Optional怎么用?Golang Tag.Optional使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类gnd/la/util/structs.Tag
的用法示例。
在下文中一共展示了Tag.Optional方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: InputNamed
// InputNamed takes a (generally) user-provided input string and parses it into the out
// parameter, which must be settable (this usually means you'll have to pass a pointer
// to this function). See the documentation on Parse() for a list of the supported types.
// If name is provided, it will be included in any error returned by this function.
// Additional constraints might be specified with the tag parameter, the ones currently
// supported are:
// - required: Marks the field as required, will return an error if it's empty.
// - optional: Marks the field as optional, will accept empty values.
// - max_length: Sets the maximum length for the input.
// - min_length: Sets the minimum length for the input.
// - alphanumeric: Requires the input to be only letters and numbers
//
// Finally, the required parameter indicates if the value should be considered required
// or optional in absence of the "required" and "optional" tag fields.
func InputNamed(name string, input string, out interface{}, tag *structs.Tag, required bool) error {
v, err := types.SettableValue(out)
if err != nil {
return err
}
if err := parse(input, v); err != nil {
return err
}
if v.Type().Kind() != reflect.Bool && tag != nil {
if ((required && !tag.Optional()) || tag.Required()) && input == "" {
return RequiredInputError(name)
}
if maxlen, ok := tag.MaxLength(); ok && len(input) > maxlen {
if name != "" {
return i18n.Errorfc("form", "%s is too long (maximum length is %d)", name, maxlen)
}
return i18n.Errorfc("form", "too long (maximum length is %d)", maxlen)
}
if minlen, ok := tag.MinLength(); ok && len(input) < minlen {
if name != "" {
return i18n.Errorfc("form", "%s is too short (minimum length is %d)", name, minlen)
}
return i18n.Errorfc("form", "too short (minimum length is %d)", minlen)
}
if tag.Alphanumeric() && len(input) > 0 && !alphanumericRe.MatchString(input) {
if name != "" {
return i18n.Errorfc("form", "%s must be alphanumeric", name)
}
return i18n.Errorfc("form", "must be alphanumeric")
}
}
return nil
}