最近開始學習go,邊學邊做一份筆記,幫助自己,幫助他人,如果有寫錯的地方,歡迎大家糾正,感激不盡。
這裡以二進位制包為例
下載二進位制包
wget https://studygolang.com/dl/golang/go1.15.7.linux-amd64.tar.gz
將下載的二進位制包解壓至 /usr/local目錄
tar -C /usr/local/ -xzf go1.15.7.linux-amd64.tar.gz
將
/usr/local/go/bin
目錄新增至PATH環境變數export PATH=$PATH:/usr/local/go/bin
hello world
//建立一個hello.go檔案 package main //宣告包,每個指令碼中必須包含 import "fmt" //下面程式碼中會使用到的包,沒使用到不要import,否則報錯 func main() { //主函式,每個程式檔案中必須有,第一個執行的函式(有init則init先執行) fmt.Println("hello world") //使用fmt包中的Println列印,fmt.Println(...) 可以將字串輸出到控制檯,並在最後自動增加換行字元 \n ,使用 fmt.Print("hello, world\n") 可以得到相同的結果 } //使用go run執行 $ go run hello.go hello world //使用go build來生成二進位制可執行檔案 go build hello.go $ ./hello hello world windows上編譯後,.exe字尾,同樣可以執行,這樣就很容易跨平臺,並且單獨執行一些自動化的任務
可以看到init函式比main函式先執行,因為可以做一些初始化任務
go和php一些不一樣的地方,特此說明
go中,一個大寫開頭的變數,常量,函式等名稱的,比如上面的Println(), 則可以被包外部程式碼所使用,可以看作PHP中的public,比如一個指令碼中呼叫某個類,在類外部,我們只能使用public宣告的方法和屬性;如果是小寫開頭的,則包外部是不可見的,包內部是可見可用的,類似protected
花括號問題
func main() { // 錯誤,不能單獨作為一行(php中是可以的) fmt.Println("Hello, World!") }
結束分隔符問題
go中,一條程式碼語句結束,作為一行,是不需要加結束分隔符的;當然,加了也不會報錯的
如果多條程式碼語句在同一行,則必須加分隔符,否則報錯字串拼接符
+
php中是.
, js和java,go中都是+
空格的使用
加空格,有些是必須的,有些會更具可讀性var age int fruit = apples + oranges
go中字串必須使用雙引號,使用單引號會報錯,這個和php很不一樣,php中都可以使用,php的雙引號可以解析變數; go中並不能
go中變數必須先宣告才能使用,並且變數必須在程式中被使用過,否則編譯報錯
可以看到我宣告瞭一個name變數,但是沒有使用過它,編譯時直接報錯,其實和上面fmt包引入後,沒有使用其中的任何元素,會報錯是一個意思;go中的變數宣告是可以省略資料型別的,宣告時是可以賦初值的,不給初值,系統會預設給一個的,變數的宣告使用後面會講到;
總結:
- 可以看到go可以很方便的編譯打包成各平臺的,可執行的,程式檔案執行,並且不依賴多餘的執行環境,這樣我們除了寫大型專案,也可以寫一些實用的小指令碼跨平臺執行;
- 還可以看到go中的程式碼風格是比較嚴謹的,比如變數宣告就必須得使用,這一點可以讓我們很方便的檢測出程式碼中哪些變數沒有被使用到,避免記憶體浪費;當然可能會導致函式返回值多餘問題,這個後面講到;
本作品採用《CC 協議》,轉載必須註明作者和本文連結