1 Star 0 Fork 1

brucewang/qlang

forked from landy/qlang 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
types.go 1.38 KB
一键复制 编辑 原始数据 按行查看 历史
xushiwei 提交于 2016-05-28 19:11 . #96 builtin function: make
package types
import (
"fmt"
"reflect"
"qlang.io/qlang.spec.v1"
)
// -----------------------------------------------------------------------------
var (
// Var is reflect.Type of interface{}
Var = reflect.TypeOf((*interface{})(nil)).Elem()
)
// Reflect returns reflect.Type of typ.
//
func Reflect(typ interface{}) reflect.Type {
if t, ok := typ.(qlang.GoTyper); ok {
return t.GoType()
}
if t, ok := typ.(string); ok {
if v, ok := builtinTypes[t]; ok {
return v
}
} else if t, ok := typ.(reflect.Type); ok {
return t
}
panic(fmt.Errorf("unknown type: `%v`", typ))
}
var builtinTypes = map[string]reflect.Type{
"int": reflect.TypeOf(0),
"bool": reflect.TypeOf(false),
"float": reflect.TypeOf(float64(0)),
"string": reflect.TypeOf(""),
"byte": reflect.TypeOf(byte(0)),
"var": Var,
"int:int": reflect.TypeOf(map[int]int(nil)),
"int:float": reflect.TypeOf(map[int]float64(nil)),
"int:string": reflect.TypeOf(map[int]string(nil)),
"int:var": reflect.TypeOf(map[int]interface{}(nil)),
"string:int": reflect.TypeOf(map[string]int(nil)),
"string:float": reflect.TypeOf(map[string]float64(nil)),
"string:string": reflect.TypeOf(map[string]string(nil)),
"string:var": reflect.TypeOf(map[string]interface{}(nil)),
}
// -----------------------------------------------------------------------------
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/brucewangzhihua1/qlang.git
git@gitee.com:brucewangzhihua1/qlang.git
brucewangzhihua1
qlang
qlang
v2.9.20

搜索帮助