二二、GO語言的反射

基本介紹

  1.反射可以在運行時動態獲取變量的各種信息,比如變量的類型(type),類別(kind)

  2.如果是結構體變量還可以獲取到結構本身的信息(包括字段和方法)

  3.通過反射可以修改變量的值,可以調用關聯的方法

  4.使用反射需要引入reflect包

    reflect包介紹

      import "reflect"

      reflect包實現了運行時反射,允許程序操作任意類型的對象。典型用法是用靜態類型interface{}保存一個值,通過調用TypeOf獲取其動態類型信息,該函數返回一個Type類型值。調用ValueOf函數返回一個Value類型值,該值代表運行時的數據。Zero接受一個Type類型參數並返回一個代表該類型零值的Value類型值。

 

反射的注意事項和細節說明

  1.reflect.Value.Kind,獲取變量的類別,返回的是一個常量

  2.Type是類型,Kind是類別,Type和Kind可能是相同的,也可能是不相同的,

      比如說自定義一個結構體Person,那麼這個結構體的類別是struct,類型是Person,

      自定義一個結構體Computer,那麼這個結構體的類別是struct,類型是Computer,

      但是如果是int的話,那麼類型和類別都是int

  3.通過反射可以讓變量在interface{}和Reflect.Value之間相互轉換,interface可以通過類型斷言得到實際變量的類型

 

  

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章