本文整理汇总了Golang中gnd/la/util/structs.Tag类的典型用法代码示例。如果您正苦于以下问题:Golang Tag类的具体用法?Golang Tag怎么用?Golang Tag使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Tag类的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: FieldType
func (b *Backend) FieldType(typ reflect.Type, t *structs.Tag) (string, error) {
if c := codec.FromTag(t); c != nil {
if c.Binary || t.PipeName() != "" {
return "BLOB", nil
}
return "TEXT", nil
}
switch typ.Kind() {
case reflect.Bool:
return "BOOLEAN", nil
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
return "INTEGER", nil
case reflect.Float32, reflect.Float64:
return "REAL", nil
case reflect.String:
return "TEXT", nil
case reflect.Slice:
// []byte
if typ.Elem().Kind() == reflect.Uint8 {
return "BLOB", nil
}
case reflect.Struct:
if typ.Name() == "Time" && typ.PkgPath() == "time" {
return "INTEGER", nil
}
}
return "", fmt.Errorf("can't map field type %v to a database type", typ)
}
开发者ID:rainycape,项目名称:gondola,代码行数:28,代码来源:backend.go
示例2: 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
}
开发者ID:rainycape,项目名称:gondola,代码行数:47,代码来源:input.go
示例3: isPrimaryKey
func (d *Driver) isPrimaryKey(fields *driver.Fields, idx int, tag *structs.Tag) bool {
if tag.Has("primary_key") {
return true
}
for _, v := range fields.CompositePrimaryKey {
if v == idx {
return true
}
}
return false
}
开发者ID:rainycape,项目名称:gondola,代码行数:11,代码来源:driver.go
示例4: DecomposeField
func (ormStructConfigurator) DecomposeField(s *structs.Struct, typ reflect.Type, tag *structs.Tag) bool {
// Don't decompose fields with a codec
if tag.Has("codec") {
return false
}
// Avoid decomposing time.Time
if typ.Name() == "Time" && typ.PkgPath() == "time" {
return false
}
return true
}
开发者ID:rainycape,项目名称:gondola,代码行数:11,代码来源:registry.go
示例5: ScanByteSlice
func (b *SqlBackend) ScanByteSlice(val []byte, goVal *reflect.Value, t *structs.Tag) error {
if goVal.Kind() == reflect.String {
goVal.SetString(string(val))
return nil
}
if len(val) > 0 && !t.Has("raw") {
b := make([]byte, len(val))
copy(b, val)
val = b
}
goVal.Set(reflect.ValueOf(val))
return nil
}
开发者ID:rainycape,项目名称:gondola,代码行数:13,代码来源:backend.go
示例6: defaultsToNullEmpty
// returns wheter the kind defaults to nullempty option
func defaultsToNullEmpty(typ reflect.Type, t *structs.Tag) bool {
if t.Has("references") || t.Has("codec") || (t.Has("notnull") && typ.Kind() != reflect.Bool) {
return true
}
switch typ.Kind() {
case reflect.Slice, reflect.Ptr, reflect.Interface, reflect.String:
return true
case reflect.Struct:
return typ == timeType
}
return false
}
开发者ID:rainycape,项目名称:gondola,代码行数:13,代码来源:registry.go
示例7: FromTag
// FromTag returns the pipe for a given field tag.
func FromTag(t *structs.Tag) *Pipe {
return registry[t.PipeName()]
}
开发者ID:rainycape,项目名称:gondola,代码行数:4,代码来源:pipe.go
示例8: FromTag
// FromTag returns the pipe for a given field tag.
func FromTag(t *structs.Tag) *Codec {
return codecs[t.CodecName()]
}
开发者ID:rainycape,项目名称:gondola,代码行数:4,代码来源:codec.go
示例9: defaultsToOmitEmpty
func defaultsToOmitEmpty(typ reflect.Type, t *structs.Tag) bool {
return t.Has("auto_increment") || (t.Has("default") && typ.Kind() != reflect.Bool)
}
开发者ID:rainycape,项目名称:gondola,代码行数:3,代码来源:registry.go
注:本文中的gnd/la/util/structs.Tag类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论