1.靜態類型,編譯型的開源語言python
2.腳本華的語法,支持多種編程範式(函數式&面向對象)c++
3.原生,給力的併發編程的支持git
1.腳本化的語法編程
2.靜態類型+編譯型,程序運行速度有保障ruby
3.原生支持併發編程(下降開發,維護成本。程序能夠更好的執行)網絡
1.語法糖並無python和ruby那麼多架構
2.目前的程序運行速度還不及c。但已經趕超c++和Java併發
3.第三方函數庫暫時不能像絕對主流的編程語言那樣多編程語言
1.GOROOT:安裝目錄svn
2.GOPATH:工做區
3.GOBIN:編譯文件
GOOS:操做系統
GOARCH:計算架構
1.用於存放源碼文件
2.以代碼包爲組織形式
1.用於存放歸檔文件(名稱以.a爲後綴的文件)
2.全部歸檔文件都會被存放在pkg目錄下的平臺相關目錄中,一樣以代碼包爲組織形式
1.當環境變量GOBIN已有效設置時,該目錄會變的無心義
2.當GOPATH的值中包含多個工做區的路徑時,必須設置GOBIN,不然沒法成功安裝go程序的可執行文件
1.名稱以.go爲後綴,內容以go語言代碼組織的文件
2.多個go源碼文件是須要用代碼包組織起來的
1.聲明本身屬於main代碼包,包含無參數聲明和結果聲明的main函數
2.被安裝後,相應的可執行文件會被存放到GOBIN指向的目錄或 當前工做區目錄的bin目錄下
3.go程序的入口,但不建議把程序都寫在一個文件中
4.同一個代碼包中強烈不建議直接包含多個命令源碼文件
1.不具有命令源碼文件的特徵的源碼文件
2.被安裝後,相應的歸檔文件會被存放到當 前工做區目錄/pkg/平臺相關目錄 下
1.至少有一個函數名稱以Test或Benchmark爲前綴
2.該函數接受一個類型爲*testing.T或*testing.B的參數
3.示例:
func TestFind(t *testing.T){ } //功能測試函數 func BenchmarkFind(b *testing.B){ } //基準測試函數或性能測試函數
1.編譯和歸檔的最基本單位
2.代碼劃分,集結和依賴的有效組織形式,也是權限控制的輔助手段
1.每一個源碼文件必須聲明其所屬的代碼包
2.同一個代碼包中的全部源碼文件聲明的代碼包應該是相同的
1.代碼包聲明語句中的包名稱應該是該代碼包的導入路徑的最右子路徑
1.代碼包導入語句中使用的包名稱應該與其導入的路徑一致
import 「strings」===> strings.HasPrefix(「abc」,」a」)
import str 「strings」===>str.HasPrefix(「abc」,」a」) //能夠直接使用別名
import . 「strings」===>HasPrefix(「abc」,」a」) //無需前綴,本地!!!
import _ 「strings」 //僅執行代碼包中的初始化函數
1.單一代碼包內:對全部全局函數進行求值===>執行全部init函數
2.不一樣代碼包之間:執行被導入代碼包中的init===>執行導入它的那個代碼包的init函數
3. 4.每個init函數只會被執行一次,init在main函數以前執行
源碼文件 —> 編譯 —> 臨時文件 —>運行 —>1. 可執行文件 2.歸檔文件
1.-a :強制編譯相關代碼,不論它們的編譯結果是否已經是最新的,通常加上
2.-n :打印編譯過程當中所需的命令,但不真正執行它們
3.-p n :並行編譯,n表明並行數量。n的值最好設置爲當前cpu的邏輯cpu(全部cpu的核的總數量)的個數。加快編譯速度
4.-v : 列出被編譯的代碼包的名稱(不包含go語言自帶的標準庫的代碼包)
5.-work :顯示編譯時建立的臨時工做目錄的路徑,而且不刪除此臨時工做目錄
6.-x :打印編譯過程當中所需運行的命令,並執行它們
1.用於編譯源碼文件或代碼包
2.編譯非命令源碼文件不會產生任何結果文件,只會檢查源碼文件的有效性
3.編譯命令源碼文件會在該命令的執行目錄中生成一個可執行文件
4.執行該命令且不追加任何參數時,它會試圖把當前目錄做爲代碼包並編譯
5.執行該命令且以代碼包的導入路徑做爲參數時,該代碼包及其依賴會被編譯
6.執行該命令且以若干源碼文件做爲參數時,只有這些文件會被編
1.用於編譯並安裝代碼包或源碼文件
2.安裝代碼包會在當前工做區的 pkg/平臺相關目錄 下生成歸檔文件
3.安裝命令源碼文件會在當前工做區的bin目錄或$GOBIN目錄下生成可執行文件
4.執行該命令且不追加任何參數時,它會試圖把當前目錄做爲代碼包並安裝
5.執行該命令且以代碼包的導入路徑做爲參數時,該代碼包及其依賴會被安裝
6.執行該命令且以命令源碼文件及相關庫源碼文件做爲參數時,只有這些文件會被編譯並安裝
1.-d :直至下載工做,而不執行安裝動做
2.-fix :在下載代碼包以後先執行修正動做,然後再緊張編譯和安裝。主要爲了消除版本不兼容
3.-u :利用網絡來更新已有的代碼包及其依賴包