Go 語言聖經 第十二章 反射
阿新 • • 發佈:2018-12-16
/*
第十二章 反射
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語言基礎