本文整理汇总了Golang中github.com/mattn/anko/vm.Env.Get方法的典型用法代码示例。如果您正苦于以下问题:Golang Env.Get方法的具体用法?Golang Env.Get怎么用?Golang Env.Get使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/mattn/anko/vm.Env
的用法示例。
在下文中一共展示了Env.Get方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: Import
//.........这里部分代码省略.........
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
}
return []rune(s)[0]
}))
env.Define("string", reflect.ValueOf(func(b []byte) string {
return string(b)
}))
env.Define("typeof", reflect.ValueOf(func(v interface{}) string {
return reflect.TypeOf(v).String()
}))
env.Define("defined", reflect.ValueOf(func(s string) bool {
_, err := env.Get(s)
return err == nil
}))
env.Define("load", reflect.ValueOf(func(s string) interface{} {
body, err := ioutil.ReadFile(s)
if err != nil {
panic(err)
}
scanner := new(parser.Scanner)
scanner.Init(string(body))
stmts, err := parser.Parse(scanner)
if err != nil {
if pe, ok := err.(*parser.Error); ok {
pe.Filename = s
panic(pe)
}
panic(err)
}
rv, err := vm.Run(stmts, env)
if err != nil {
panic(err)
}
if rv.IsValid() && rv.CanInterface() {
return rv.Interface()
}
return nil
}))
env.Define("panic", reflect.ValueOf(func(e interface{}) {
os.Setenv("ANKO_DEBUG", "1")
panic(e)
}))
env.Define("print", reflect.ValueOf(fmt.Print))
env.Define("println", reflect.ValueOf(fmt.Println))
env.Define("printf", reflect.ValueOf(fmt.Printf))
return env
}