24 lines
443 B
Go
24 lines
443 B
Go
|
|
package main
|
||
|
|
|
||
|
|
import "reflect"
|
||
|
|
|
||
|
|
func main() {
|
||
|
|
info := "hello world"
|
||
|
|
var fn any = func(n int) int {
|
||
|
|
println(info, n)
|
||
|
|
return n + 1
|
||
|
|
}
|
||
|
|
v := reflect.ValueOf(fn)
|
||
|
|
t := reflect.TypeOf(fn)
|
||
|
|
if kind := v.Type().Kind(); kind != t.Kind() && kind != reflect.Func {
|
||
|
|
panic("kind error")
|
||
|
|
}
|
||
|
|
r := v.Call([]reflect.Value{reflect.ValueOf(100)})
|
||
|
|
println(r[0].Int())
|
||
|
|
ifn, ok := v.Interface().(func(int) int)
|
||
|
|
if !ok {
|
||
|
|
panic("error")
|
||
|
|
}
|
||
|
|
ifn(100)
|
||
|
|
}
|