本文整理汇总了Golang中github.com/mattn/anko/vm.Env.Define方法的典型用法代码示例。如果您正苦于以下问题:Golang Env.Define方法的具体用法?Golang Env.Define怎么用?Golang Env.Define使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/mattn/anko/vm.Env
的用法示例。
在下文中一共展示了Env.Define方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: handleAppEngine
func handleAppEngine(m *vm.Env) {
m.Define("Getppid", reflect.ValueOf(pkg.Getppid))
}
示例2: Import
func Import(env *vm.Env) *vm.Env {
env.Define("len", reflect.ValueOf(func(v interface{}) int64 {
rv := reflect.ValueOf(v)
if rv.Kind() == reflect.Interface {
rv = rv.Elem()
}
if rv.Kind() == reflect.String {
return int64(len([]byte(rv.String())))
}
if rv.Kind() != reflect.Array && rv.Kind() != reflect.Slice {
panic("Argument #1 should be array")
}
return int64(rv.Len())
}))
env.Define("keys", reflect.ValueOf(func(v interface{}) []string {
rv := reflect.ValueOf(v)
if rv.Kind() == reflect.Interface {
rv = rv.Elem()
}
if rv.Kind() != reflect.Map {
panic("Argument #1 should be map")
}
keys := []string{}
mk := rv.MapKeys()
for _, key := range mk {
keys = append(keys, key.String())
}
return keys
}))
env.Define("range", reflect.ValueOf(func(args ...int64) []int64 {
if len(args) < 1 {
panic("Missing arguments")
}
if len(args) > 2 {
panic("Too many arguments")
}
var min, max int64
if len(args) == 1 {
min = 0
max = args[0] - 1
} else {
min = args[0]
max = args[1]
}
arr := []int64{}
for i := min; i <= max; i++ {
arr = append(arr, i)
}
return arr
}))
env.Define("toBytes", reflect.ValueOf(func(s string) []byte {
return []byte(s)
}))
env.Define("toRunes", reflect.ValueOf(func(s string) []rune {
return []rune(s)
}))
env.Define("toString", reflect.ValueOf(func(v interface{}) string {
return fmt.Sprint(v)
}))
env.Define("toInt", reflect.ValueOf(func(v interface{}) int64 {
nt := reflect.TypeOf(1)
rv := reflect.ValueOf(v)
if rv.Type().ConvertibleTo(nt) {
return 0
}
return rv.Convert(nt).Int()
}))
env.Define("toFloat", reflect.ValueOf(func(v interface{}) float64 {
nt := reflect.TypeOf(1.0)
rv := reflect.ValueOf(v)
if rv.Type().ConvertibleTo(nt) {
return 0.0
}
return rv.Convert(nt).Float()
}))
env.Define("toBool", reflect.ValueOf(func(v interface{}) bool {
nt := reflect.TypeOf(true)
rv := reflect.ValueOf(v)
if rv.Type().ConvertibleTo(nt) {
return false
}
return rv.Convert(nt).Bool()
}))
env.Define("toChar", reflect.ValueOf(func(s rune) string {
return string(s)
}))
env.Define("toRune", reflect.ValueOf(func(s string) rune {
if len(s) == 0 {
return 0
}
//.........这里部分代码省略.........