internal/lib/reflect: TypeOf check closure

This commit is contained in:
visualfc
2024-11-04 10:07:40 +08:00
parent 85a736d49b
commit 7bbd3a7e36
3 changed files with 454 additions and 0 deletions

23
cl/_testgo/reflect/in.go Normal file
View File

@@ -0,0 +1,23 @@
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)
}