1. 程式人生 > >Go 語言聖經 第十二章 反射

Go 語言聖經 第十二章 反射

/*
第十二章 反射

Go語言提供了一種反射機制,
能夠在執行時更新變數和檢查它們的值、呼叫它們的方法和它們支援的內在操作,
而不需要在編譯時就知道這些變數的具體型別。

反射是一個複雜的內省技術,
不應該隨意使用

fmt包提供的字串格式功能,encoding/json和encoding/xml,text/template和html/template包
這些包內部都是用反射技術實現的,但是它們自己的API都沒有公開反射相關的介面

*/

12.1 為何需要反射?

知識點

  • 1.為了處理不滿足公共介面的型別的值,或者設計函式還不存在的型別

12.2 reflect.Type和reflect.Value

知識點

  • 1.reflect包提供了反射功能,定義兩個型別Type和Value
  • 2.Type表示一個Go型別. 它是一個介面
  • 3.一個Value,有很多方法來檢查其內容, 無論具體型別是什麼

程式碼

  • 章節中的例子

func test_format_reflect()  {

    var x int64 = 1
    var d time.Duration = 1 * time.Nanosecond
    fmt.Println(format.Any(x))                  // "1"
    fmt.Println(format.Any(d))                  //
"1" fmt.Println(format.Any([]int64{x})) // "[]int64 0x8202b87b0" fmt.Println(format.Any([]time.Duration{d})) // "[]time.Duration 0x8202b87e0" }
------不足之處,歡迎補充------

備註

  • 學習記錄所使用的GO版本是1.8
  • 學習記錄所使用的編譯器工具為GoLand
  • 學習記錄所使用的系統環境為Mac os
  • 學習者有一定的C語言基礎

程式碼倉庫