簡介
特性:
- 自動垃圾回收 gc
- 更豐富的內置類型 字符串 字典,切片
- 函數多返回值 避免構建一個新的數據結構獲取返回值
- 錯誤處理 defer panic recover
- 匿名函數和閉包 函數也是值類型
- 類型和接口 鴨式辯行,只要實現了接口中所有方法的類型,可以當作是接口類型直接賦值,而不需要繼承
- 併發編程 goroutine,通過消息傳遞而不是通過共享內存通信,go關鍵字啓動一個協程,一個協程阻塞時,調度器會調用其他的協程執行,調度的開銷非常小,go實現了CSP 通信順序進程模型,用channel來實現,通過channel來進行跨goroutine的通信,如果多個goroutine不得不訪問共享內存,可以使用sync包提供讀寫鎖功能
- 反射 獲取對象類型的詳細信息,對性能有影響,不推薦使用
- 語言交互性 可以通過Cgo工具調用c語言代碼
其他需要注意的地方:
- package表示go代碼所屬的包,go可執行程序必須包含一個名爲main的包,其中包含一個main()函數,沒有參數也不能定義返回值,命令行傳入的參數在os.Args中
- import用於導入依賴的包,不能包含在源碼文件中沒有用到的包,否則go編譯器會報錯
- 使用關鍵字func 定義函數
- 註釋和C語言相同
編譯程序
- go build 編譯
- go run 編譯加執行
工程管理
- 使用go命令行
- 工程路徑加入到GOPATH中(./bashrc中export,多個路徑用冒號分割)
- 消除工程文件概念,完全用目錄結構和包名來推導工程結構和構建順序