Go學習入門

2022-02-12 10:45:50 字數 2263 閱讀 8883

go語言宣稱為網際網路時代的c語言,那她有那些特性值得我們必須學習呢:

go語言的歷史要從貝爾實驗室開始說起,我們知道貝爾實驗室計算科學研究中心的肯•湯普遜 ken thompson 和丹尼斯 • 里奇 dennis ritchie開發了unix系統以及開發系統所使用的c語言。在這之後他們還開發了plan 9作業系統。

後來包括ken tompson在內的plan 9 原班人馬加入google,在google他們創立了go語言。2023年9月之前go語言是20%自由時間的實驗專案,到了2023年5月google發現go語言的巨大潛力,開始全力支援這個專案。go語言的第乙個版本是2023年11月正式對外發布。

go語言採用bsd授權協議,任何人都可以檢視go語言的所有源**。

go語言之所以發展迅猛引人注目,還有乙個重要原因是其擁有乙個豪華的作者團隊。我們來看一下go的作者都有誰:

package main

/** * my first go program!

**/import "fmt"

func main()

其中的一些語法規範

python 和 go 給我印象最深刻的一點是形式即**,例如原來在php中,每段**的結尾都必須有;來表示,而在python和go中,通過嚴格的形式規定,可以減少不必要**的錄入,同時又能夠保證參與工程開發的所有人都遵循這個形式。

特別是對於大型的工程,不再通過一些配置檔案來指定目錄層次或者引用關係,而完全依靠實際的目錄層級來推導工程的結構。這樣就保證了工程規範能夠強制性的被所有人執行,大大提高了協作的效率。

bogon:~ rousseau$ go version

go version go1.11 darwin/amd64

上面的命令執行後如果能夠正常輸出表示編譯環境已經安裝好了,可以將hello world程式編譯了。將上面的**儲存為hello.go,然後執行。

bogon:go.my rousseau$ go run hello.go

hello, world!

go run命令將編譯、鏈結、 執行三個步驟合為一步,執行後不會再當前目錄看到任何中間檔案和可執行檔案。使用go build命令會生成可執行檔案。

bogon:go.my rousseau$ go build hello.go 

bogon:go.my rousseau$ ls

hello hello.go

bogon:go.my rousseau$ ./hello

hello, world!

關於開發工具的選擇,這個第一要看個人習慣,第二要結合專案的規模和最多使用的一些功能。可以用來程式設計的工具包括 vim、vs code、liteide、goland等,目前我水平還比較菜,感覺vim或者vs code就能滿足需求了。

go消除了工程檔案的概念,完全用目錄結構和包名來推導工程結構和構建順序。

看乙個簡單的命令列計算器工程的目錄結構,**在這裡

想要編譯這個工程,執行以下命令。

bogon:calcproject rousseau$ export gopath=$(pwd)

bogon:calcproject rousseau$ cd bin

bogon:bin rousseau$ go build calc

bogon:bin rousseau$ ./calc

usage: calc command [arguments] ...

the commands are:

add addition of two values.

sqrt square root of a non-negative value.

go語言中包含了乙個fmt包,包含了大量的列印函式,主要用到的是printf()println()兩個函式。區別就是乙個能夠換行乙個不能換行。

go語言編譯的二進位制程式直接支援gdb除錯,具體的細節後續會詳細介紹。

Go學習入門

go語言宣稱為網際網路時代的c語言,那她有那些特性值得我們必須學習呢 go語言的歷史要從貝爾實驗室開始說起,我們知道貝爾實驗室計算科學研究中心的肯 湯普遜 ken thompson 和丹尼斯 里奇 dennis ritchie開發了unix系統以及開發系統所使用的c語言。在這之後他們還開發了plan...

GO語言入門學習筆記

迴圈語句介紹 條件語句介紹 defer延遲語句介紹 一些注意事項 go語言之旅 go語言入門教程 每個陣列的大小都是固定的。而切片則為陣列元素提供動態大小的 靈活的視角。在實踐中,切片比陣列更常用。func main 定義切片 r bool s struct 這裡開始是切片裡的結構體例項 packa...

go基礎入門快速學習手冊

go 入門安裝與hello world gopath goroot詳解 go import匯入包詳解 go 加速配置詳解 go modules管理包工具詳解 go 基本型別介紹 go 常量詳解 go 變數詳解 go 運算子詳解 go 指標概念 go 指標使用 go 流程控制詳解 go array陣列...