可以使用反射(reflection)来实现。反射是一种在运行时检查类型和变量的能力,可以通过反射获取函数的名称。 首先,需要导入`reflect`包。然后,可以使用`reflect.TypeOf()...
package main import ("fmt""reflect")func main() { // 一个简单的函数,接受一个字符串并打印 myFunction := func(s string) { fmt.Println("Hello, " + s)} // 字符串表示的函数名 functionName := "myFunction"// 通过反射获取函数 functionValue := reflect.ValueOf(myFunction)1/ 2 ...
fmt.Println("name:", GetFunctionName(foo)) // runtime/debug.FreeOSMemory fmt.Println(GetFunctionName(debug.FreeOSMemory)) // FreeOSMemory fmt.Println(GetFunctionName(debug.FreeOSMemory, '.')) // FreeOSMemory fmt.Println(GetFunctionName(debug.FreeOSMemory, '/', '.')) }...
type=%T\n",rTyp,rTyp)rVal:=reflect.ValueOf(b)fmt.Printf("rVal=%v,type=%T\n",rVal,rVal)iVal:=rVal.Interface()stu2:=iVal.(student)fmt.Printf("stu2=%v,type=%T\n",stu2,stu2)fmt.Printf("name:%v,age:%v",stu2.name,stu2.age)}funcmain(){stu:=student{name:"tom",age:...
pointerValue = reflect.ValueOf(age) newValue = pointerValue.Elem() // 如果非指针,直接panic: reflect: call of reflect.Value.Elem on int Value } 3.方法调用。Method和MethodByName可以获取到具体的方法,Call可以实现方法调用。 // Method returns a function value corresponding to v's i'th method....
rVal :=reflect.ValueOf(b) fmt.Printf("rVal=%v,type=%T\n", rVal, rVal) iVal :=rVal.Interface() stu2 :=iVal.(student) fmt.Printf("stu2=%v,type=%T\n", stu2, stu2) fmt.Printf("name:%v,age:%v", stu2.name, stu2.age) ...
你可以使用反射来获取变量的类型: var t := reflect.Typeof(v)。返回值是一个reflect.Type类型。该值有很多定义好的方法可以使用。 Name() 返回类型的名称。 但是像切片或指针是没有类型名称的,只能返回空字符串。 Kind() Kind有slice, map , pointer指针,struct, interface, string , Array, Function, int...
s := reflect.ValueOf(&t).Elem() typeOfT := s.Type()fori :=0; i < s.NumField(); i++ { f := s.Field(i) fmt.Printf("%d %s %s = %v\n", i, typeOfT.Field(i).Name, f.Type(), f.Interface()) } 0Aint=231B string = skidoo ...
22 makeSwap := func(fptr interface{}) {23// fptr is a pointer to a function.24// Obtain the function value itself (likely nil) as a reflect.Value25// so that we can query its type and then set the value.26 fn := reflect.ValueOf(fptr).Elem()2728// Make a function of the...
每种语言的反射模型都不同,并且有些语言根本不支持反射。Golang语言实现了反射,反射机制就是在运行时动态的调用对象的方法和属性,官方自带的reflect包就是反射相关的,只要包含这个包就可以使用。 Golang的gRPC,json包都是通过反射实现的。 interface 和 反射 ...