package main
import (
"fmt"
"reflect"
)type monster struct
//顯示s的值
func (s monster) print()
//返回兩個數的和
func (s monster) getsum(n1,n2 int) int
//設定s結構體的在
func (s monster) set(name string,age int,score float32,*** string)
func teststruct(a inte***ce{})
num := val.numfield()
fmt.printf("結構體中有 %d 個字段\n",num)
for i := 0;ifmt.println()
} //獲取到該結構體有多少個方法
numofmethod := val.nummethod()
fmt.printf("結構體有 %d 個方法\n",numofmethod)
//var params reflect.value
val.method(1).call(nil)//函式的排序是按照函式名(ascii)排序
//呼叫結構體的第1個方法method(0)
var params reflect.value
res := val.method(0).call(params)//傳入引數是reflect.value,返回reflect
fmt.println("res=",res[0].int())//返回結果,返回結果是reflect.value
}func main()
teststruct(a)
}
反射 reflect 及其應用
class 所有類的位元組碼檔案 class.forname 全類名 類名.class 例項.getclass field getdeclaredfield getdeclaredfields 修飾符 型別 名稱 method 獲取 getdeclaredmethod 引數型別的class.para...
go語言基礎 反射 reflect
反射reflect struct reflect.typeof i inte ce type 獲取結構體的字段的型別,欄位名 方法的型別,方法的名字 packagemain import fmt reflect typepersonstruct func p person say msg strin...
GO語言學習 反射reflect
反射能在執行期探知物件的型別資訊和記憶體結構。也是實現元程式設計的重要手段。反射所需的全部資訊都源自介面變數。介面變數處儲存自身型別外,還會儲存實際物件的型別資料。將任何傳入的物件轉換為介面型別 func typeof i inte ce type func valueof i inte ce va...