internal/lib/reflect: TypeOf check closure
This commit is contained in:
23
cl/_testgo/reflect/in.go
Normal file
23
cl/_testgo/reflect/in.go
Normal 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)
|
||||
}
|
||||
Reference in New Issue
Block a user