從 Go 1.0.3 版本開始,不再使用 8g,8l 之類的指令進行程序的構建,取而代之的是統一的 go build
和 go install
等命令,而這些指令會自動調用相關的編譯器或鏈接器。
如果你想獲得更深層次的信息,你可以在目錄 $GOROOT/src/cmd
下找到編譯器和鏈接器的源代碼。Go 語言本身是由 C 語言開發的,而不是 Go 語言(Go 1.5 開始自舉)。詞法分析程序是 GNU bison,語法分析程序是名為 $GOROOT/src/cmd/gc/go.y
的 yacc 文件,它會在同一目錄輸出 y.tab.{c,h}
文件。如果你想知道更多有關構建過程的信息,你可以在 $GOROOT/src/make.bash
中找到。
摘自:https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/02.1.md
go不支持的特性:
許多能夠在大多數面向對象語言中使用的特性 Go 語言都沒有支持,但其中的一部分可能會在未來被支持。
- 為了簡化設計,不支持函數重載和操作符重載
- 為了避免在 C/C++ 開發中的一些 Bug 和混亂,不支持隱式轉換
- Go 語言通過另一種途徑實現面向對象設計(第 10-11 章)來放棄類和類型的繼承
- 盡管在接口的使用方面(第 11 章)可以實現類似變體類型的功能,但本身不支持變體類型
- 不支持動態加載代碼
- 不支持動態鏈接庫
- 不支持泛型
- 通過
recover
和panic
來替代異常機制(第 13.2-3 節) - 不支持斷言
- 不支持靜態變量
關於 Go 語言開發團隊對於這些方面的討論,你可以通過 Go 常見問題 頁面查看。
1.2.8 使用 Go 語言編程
- 簡化問題,易於學習
- 內存管理,簡潔語法,易於使用
- 快速編譯,高效開發
- 高效執行
- 並發支持,輕松駕馭
- 靜態類型
- 標准類庫,規范統一
- 易於部署
- 文檔全面
- 免費開源
轉自:https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/01.2.md