(文章持續更新中...有志同道合的人能夠一塊兒探討下。整個系列(1~8)準備重寫,不過都是很基礎的入門筆記,想學到很深刻的東西則不建議閱讀...)數組
反射是指在程序運行期對程序自己進行訪問和修改的能力,使用 reflect.TypeOf() 函數能夠得到任意值的類型對象(reflect.Type)bash
const (
Invalid Kind = iota // 非法類型
Bool // 布爾型
Int // 有符號整型
Int8 // 有符號8位整型
Int16 // 有符號16位整型
Int32 // 有符號32位整型
Int64 // 有符號64位整型
Uint // 無符號整型
Uint8 // 無符號8位整型
Uint16 // 無符號16位整型
Uint32 // 無符號32位整型
Uint64 // 無符號64位整型
Uintptr // 指針
Float32 // 單精度浮點數
Float64 // 雙精度浮點數
Complex64 // 64位複數類型
Complex128 // 128位複數類型
Array // 數組
Chan // 通道
Func // 函數
Interface // 接口
Map // 映射
Ptr // 指針
Slice // 切片
String // 字符串
Struct // 結構體
UnsafePointer // 底層指針
)
複製代碼
Go 語言中的類型名稱對應的反射獲取方法是 reflect.Type 中的 Name() 方法,返回表示類型名稱的字符串。函數
類型歸屬的種類(Kind)使用的是 reflect.Type 中的 Kind() 方法,返回 reflect.Kind 類型的常量工具
反射不只能夠獲取值的類型信息,還能夠動態地獲取或者設置變量的值。Go 語言中使用 reflect.Value 獲取和設置變量的值性能
Go 語言中,使用 reflect.ValueOf() 函數得到值的反射值對象(reflect.Value)ui
value := reflect.ValueOf(rawValue)
複製代碼
若是反射值對象(reflect.Value)中值的類型爲函數時,能夠經過 reflect.Value 調用該函數。使用反射調用函數時,須要將參數使用反射值對象的切片 []reflect.Value 構造後傳入 Call() 方法中,調用完成時,函數的返回值經過 []reflect.Value 返回spa
+=================================================+指針
Go 語言中使用 go build 命令將源碼編譯爲可執行文件code
go run 命令會編譯源碼,而且直接執行源碼的 main() 函數,不會在當前目錄留下可執行文件.,可執行文件被放在臨時文件中被執行,工做目錄被設置爲當前目錄對象
go install 的功能和 go build 相似,附加參數絕大多數均可以與 go build 通用。go install 只是將編譯的中間文件放在 GOPATH 的 pkg 目錄下,以及固定地將編譯結果放在 GOPATH 的 bin 目錄下
go get 能夠藉助代碼管理工具經過遠程拉取或更新代碼包及其依賴包,並自動完成編譯和安裝
Go 語言工具鏈中的 go pprof 能夠幫助開發者快速分析及定位各類性能問題,如 CPU 消耗、內存分配及阻塞分析