關於特性丟失 為了簡化設計,不支援函數重載和操作符重載 為了避免c/C++開發中的一些bug和混亂,不支援隱式轉換 Go語言通過另一種途徑實現物件導向設計放棄了類和類型的繼承 儘管在介面的使用方面可以實作類別似變體類型的功能,但本身不支援變體類型 不支援動態載入代碼 不支援動態連結程式庫 不支援泛型 通過recover和panic來替代異常機制 不支援斷言 不支援靜態變數
Go編譯器的知識
目前有2個版本的編譯器 :Go原生編譯器gc和非原生編譯器gccgo編譯器,其中,gc 版本的編譯器已經被移植到 Windows 平台上,並整合在主要發行版中,你也可以通過安裝 MinGW 從而在 Windows 平台下使用 gcc 編譯器。這兩個編譯器都是以單通道的形式工作。
編譯器gc編譯速度很快,但是編譯後的程式不能使用gcc連結,但是gccgo相反 Go的環境變數
$GOROOT 表示 Go 在你的電腦上的安裝位置,它的值一般都是 $HOME/go,當然,你也可以安裝在別的地方$GOARCH 表示目標機器的處理器架構,它的值可以是 386、amd64 或 arm。$GOOS 表示目標機器的作業系統,它的值可以是 darwin、freebsd、linux 或 windows。$GOBIN 表示編譯器和連結器的安裝位置,預設是 $GOROOT/bin,如果你使用的是 Go 1.0.3 及以後的版本,一般情況下你可以將它的值設定為空白,Go 將會使用前面提到的預設值。Go 編譯器支援交叉編譯,也就是說你可以在一台機器上構建運行在具有不同作業系統和處理器架構上啟動並執行應用程式,也就是說編寫原始碼的機器可以和目標機器有完全不同的特性(作業系統與處理器架構)。為了區分本地機器和目標機器,你可以使用 $GOHOSTOS 和 $GOHOSTARCH 設定目標機器的參數,這兩個變數只有在進行交叉編譯的時候才會用到,如果你不進行顯示設定,他們的值會和本地機器($GOOS 和 $GOARCH)一樣。$GOPATH 預設採用和 $GOROOT 一樣的值,但從 Go 1.1 版本開始,你必須修改為其它路徑。它可以包含多個包含 Go 語言源碼檔案、包檔案和可執行檔的路徑,而這些路徑下又必須分別包含三個規定的目錄:src、pkg 和 bin,這三個目錄分別用於存放源碼檔案、包檔案和可執行檔。$GOARM 專門針對基於 arm 架構的處理器,它的值可以是 5 或 6,預設為 6。$GOMAXPROCS 用於設定應用程式可使用的處理器個數與核心數。