在golang中可以使用反射来动态运行代码。具体步骤如下:
reflect.ValueOfValue
reflect.Value.Call
interface{}
示例代码:
package main
import (
"fmt"
"reflect"
)
func Add(a, b int) int {
return a + b
}
func main() {
// 动态调用函数Add(1, 2)
funcValue := reflect.ValueOf(Add)
result := funcValue.Call([]reflect.Value{reflect.ValueOf(1), reflect.ValueOf(2)})[0]
fmt.Println(result.Interface().(int)) // 输出3
}
go/astgo/parserreflect