Go中反射(reflect)的應用

2021-09-10 05:49:52 字數 906 閱讀 9098

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...