47 lines
771 B
Go
47 lines
771 B
Go
package schema
|
|
|
|
//go:generate stringer -type=ValueType valuetype.go
|
|
|
|
import "fmt"
|
|
|
|
// ValueType is an enum of the type that can be represented by a schema.
|
|
type ValueType int
|
|
|
|
const (
|
|
TypeInvalid ValueType = iota
|
|
TypeBool
|
|
TypeInt
|
|
TypeFloat
|
|
TypeString
|
|
TypeList
|
|
TypeMap
|
|
TypeSet
|
|
typeObject
|
|
)
|
|
|
|
// Zero returns the zero value for a type.
|
|
func (t ValueType) Zero() interface{} {
|
|
switch t {
|
|
case TypeInvalid:
|
|
return nil
|
|
case TypeBool:
|
|
return false
|
|
case TypeInt:
|
|
return 0
|
|
case TypeFloat:
|
|
return 0.0
|
|
case TypeString:
|
|
return ""
|
|
case TypeList:
|
|
return []interface{}{}
|
|
case TypeMap:
|
|
return map[string]interface{}{}
|
|
case TypeSet:
|
|
return nil
|
|
case typeObject:
|
|
return map[string]interface{}{}
|
|
default:
|
|
panic(fmt.Sprintf("unknown type %s", t))
|
|
}
|
|
}
|