原文地址:函數
http://www.niu12.com/article/10ui
####包 全部的.go 文件,除了空行和註釋,都應該在第一行聲明本身所屬的包。 每一個包都在一個單獨的目錄裏。 不能把多個包放到同一個目錄中, 也不能把同一個包的文件分拆到多個不一樣目錄中。 這意味着,同一個目錄下的全部.go 文件必須聲明同一個包名。 並不須要全部包的名字都與別的包不一樣, 由於導入包時是使用全路徑的, 因此能夠區分同名的不一樣包 包被導入後會使用你的包名做爲默認的名字, 不過這個導入後的名字能夠修改。 這個特性在須要導入不一樣目錄的同名包時頗有用 import 語句告訴編譯器到磁盤的哪裏去找想要導入的包 eg:import f1 path1/file eg:import f2 path2/file import ( f1 path1/file f2 path2/file ) 一旦編譯器找到一個知足 import 語句的包,就中止進一步查找。 有一件重要的事須要記住,編譯器會首先查找 Go 的安裝目錄, 而後纔會按順序查找 GOPATH 變量裏列出的目錄。 全部導入的包必須被使用,戶可能須要導入一個包,可是不須要引用這個包的標識符。 在這種狀況,可使用空白標識符_來重命名這個導入,可是會執行該包的init() main 包:Go 語言的編譯程序會試圖把這種名字的包編譯爲二進制可執行文件。 全部用 Go 語言編譯的可執行程序都必須有一個名叫 main 的包。 當編譯器發現某個包的名字爲 main 時, 它必定也會發現名爲 main()的函數, 不然不會建立可執行文件。 main()函數是程序的入口,因此,若是沒有這個函數,程序就沒有辦法開始執行。 程序編譯時,會使用聲明 main 包的代碼所在的目錄的目錄名做爲二進制可執行文件的文件名。 最佳實踐: 包名的慣例是使用包所在目錄的名字, 應該使用簡潔、清晰且全小寫的名字,這有利於開發時頻繁輸入包名 ####init函數 每一個包能夠包含任意多個init(),這些函數都會在程序執行開始的時候被調用 全部被編譯器發現的 init 函數都會安排在 main 函數以前執行。 init()用在設置包、初始化變量或者其餘要在程序運行前優先完成的引導工做 不能導入不使用的包,爲此使用空白標識符重命名這個導入可讓 init 函數發現並被調度運行,讓編譯器不會由於包未被使用而產生錯誤 多個包的init的函數執行順序與棧執行順序一致:先進後出,先導後執行 ####Go命令 go build . 命令會執行編譯整個項目 go build fileName 命令會執行編譯單個文件 go clean . 刪除編譯生成的可執行文件 go vet main.go 檢測代碼的常見錯誤 go fmt main.go 格式化代碼