第1章-簡介和配置
一、介紹和安裝
1.介紹
1.1 什麼是Golang
Go也被稱為Golang,它是由谷歌建立的一種開源、編譯和靜態型別的程式語言。
Golang的主要目標是使高可用性和可伸縮的web應用程式的開發變得簡單易行。
1.2 為什麼選擇Golang
當有很多其他語言(如python、ruby、node.js)時,為什麼選擇Golang作為服務端程式語言呢?
- 併發是語言的一個固有部分。因此編寫多執行緒程式是小菜一碟。這是通過Goroutines和channel實現的,我們將在後面的教程中討論。
- Golang是一種編譯語言。原始碼編譯成原生二進位制。這在解釋語言(如nodejs中使用的JavaScript)中丟失了。
- 語言規範非常簡單。整個規範適合於一個頁面,您甚至可以使用它來編寫自己的編譯器:)
- go編譯器支援靜態連結。所有的go程式碼都可以靜態地連結到一個大的fat二進位制檔案中,並且可以輕鬆地部署到雲伺服器中,而不用擔心依賴關係。
2.安裝
2.1下載
在Mac、Windows和Linux三個平臺上都支援Golang。您可以從ofollow,noindex">https://golang.org/dl/ 下載相應平臺的二進位制檔案。
Mac OS 從https://golang.org/dl/
下載osx
安裝程式。雙擊啟動安裝。按照提示,這應該在/usr/local/go
中安裝了Golang
,並且還會將資料夾/usr/local/go/bin
新增到您的PATH
環境變數中。
Windows 從https://golang.org/dl/
下載MSI
安裝程式。雙擊啟動安裝並遵循提示。這將在位置C
中安裝Golang:\Go
,並且還將新增目錄C:\Go\bin
到您的path
環境變數。
Linux 從https://golang.org/dl/
下載tar
檔案,並將其解壓到/usr/local
。
將/usr/local/go/bin
新增到PATH
環境變數中。這應該安裝在linux
中。
2.2 windows下安裝並配置環境變數
安裝步驟就不在多說什麼了,一路到底
A、配置環境變數
注意:如果是msi
安裝檔案,Go
語言的環境變數會自動設定好。
我的電腦——右鍵“屬性”——“高階系統設定”——“環境變數”——“系統變數”
假設GO安裝於C盤根目錄
新建:
-
GOROOT:Go
安裝路徑(例:C:\Go
) -
GOBIN:Go
安裝路徑的bin路徑(例:C:\Go\bin
) -
GOPATH:Go
工程的路徑(例:E:\go
)。如果有多個,就以分號分隔新增
修改:
-
Path:
新增上Go
安裝路徑,以分號結尾
工作目錄就是我們用來存放開發的原始碼的地方,對應的也是Go裡的GOPATH這個環境變數。這個環境變數指定之後,我們編譯原始碼等生成的檔案都會放到這個目錄下,GOPATH環境變數的配置參考上面的安裝Go,配置到Windows下的系統變數裡。
B、檢視是否安裝配置成功
使用快捷鍵win+R鍵,輸入cmd,開啟命令列提示符,在命令列中輸入
go env# 檢視得到go的配置資訊 go version# 檢視go的版本號
2.3 mac系統安裝並配置
安裝
雙擊 pkg 包,順著指引,即可安裝成功。 在命令列輸入 go version,獲取到 go 的version,則代表安裝成功。
配置環境變數
1、開啟終端輸入cd ~進入使用者主目錄; 2、輸入ls -all命令檢視是否存在.bash_profile; 3、存在既使用vim .bash_profile 開啟檔案; 4、輸入 i 進入vim編輯模式; 5、輸入下面程式碼, 其中 GOPATH: 日常開發的根目錄。GOBIN:是GOPATH下的bin目錄。
export GOPATH=/Users/yztc/go
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOBIN
6、點選ESC,並輸入 :wq 儲存並退出編輯。可輸入vim .bash_profile 檢視是否儲存成功。
7、輸入source ~/.bash_profile 完成對golang環境變數的配置,配置成功沒有提示。 8、輸入go env 檢視配置結果
二、搭建開發工具
安裝好atom工具,然後安裝go-plus外掛和atom-terminal-panel外掛。
1.安裝go-plus外掛
[圖片上傳失敗...(image-e5ca70-1539591668799)]
2.安裝atom-terminal-panel外掛
三、第一個程式:HelloWorld
3.1 編寫第一個程式
1.開啟編輯器建立一個新的helloworld.go檔案,並輸入以下內容:
package main import "fmt" func main() { /* 輸出 */ fmt.Println("Hello, World!") }
2.執行go程式
執行go程式由幾種方式
方式一:使用go run命令
step1:使用快捷鍵win+R,輸入cmd開啟命令列提示符
step2:進入helloworld.go所在的目錄
step3:輸入go run helloworld.go命令並觀察執行結果。
方式二:使用go build命令
step1:使用快捷鍵win+R,輸入cmd開啟命令列提示符
step2:進入helloworld.go所在的目錄
step3:輸入go build helloworld.go命令進行編譯,產生同名的helloworld.exe檔案
step4:輸入helloworld.exe,執行
方式三:使用 go playground
step1:開啟一下網址https://play.golang.org/
3.2 第一個程式的解釋說明
3.2.1 package
import package
3.2.2 import
import “fmt” 告訴 Go 編譯器這個程式需要使用 fmt 包的函式,fmt 包實現了格式化 IO(輸入/輸出)的函式
可以是相對路徑也可以是絕對路徑,推薦使用絕對路徑(起始於工程根目錄)
-
點操作 我們有時候會看到如下的方式匯入包
import( . "fmt" )
這個點操作的含義就是這個包匯入之後在你呼叫這個包的函式時,你可以省略字首的包名,也就是前面你調
用的
fmt.Println("hello world")
可以省略的寫成Println("hello world")
-
別名操作 別名操作顧名思義我們可以把包命名成另一個我們用起來容易記憶的名字
import( f "fmt" )
別名操作的話呼叫包函式時字首變成了我們的字首,即
f.Println("hello world")
-
_操作 這個操作經常是讓很多人費解的一個操作符,請看下面這個import
import ( "database/sql" _ "github.com/ziutek/mymysql/godrv" )
_操作其實是引入該包,而不直接使用包裡面的函式,而是呼叫了該包裡面的init函式
3.3.3 main與init
- 這兩個函式在定義時不能有任何的引數和返回值
- 雖然一個package裡面可以寫任意多個init函式,但推薦只用一個
- Go程式會自動呼叫init()和main()
- 每個package中的init函式都是可選的,但package main就必須包含一個main函式
- 先呼叫init函式,再呼叫main函式
- 執行程式,必須要執行存在main函式的go檔案
初始化順序:
程式的初始化和執行都起始於main包。如果main包還匯入了其它的包,那麼就會在編譯時將它們依次匯入。有時一個包會被多個包同時匯入,那麼它只會被匯入一次(例如很多包可能都會用到fmt包,但它只會被匯入一次,因為沒有必要匯入多次)。當一個包被匯入時,如果該包還匯入了其它的包,那麼會先將其它包匯入進來,然後再對這些包中的包級常量和變數進行初始化,接著執行init函式(如果有的話),依次類推。等所有被匯入的包都載入完畢了,就會開始對main包中的包級常量和變數進行初始化,然後執行main包中的init函式(如果存在的話),最後執行main函式。
四、編碼規範
4.1 編碼規範
4.2 註釋
- 單行註釋是最常見的註釋形式,你可以在任何地方使用以 // 開頭的單行註釋
- 多行註釋也叫塊註釋,均已以 /* 開頭,並以 */ 結尾,且不可以巢狀使用,多行註釋一般用於包的文件描述或註釋成塊的程式碼片段
4.3 識別符號
當識別符號(包括常量、變數、型別、函式名、結構欄位等等)以一個大寫字母開頭,如:Group1,那麼使用這種形式的識別符號的物件就可以被外部包的程式碼所使用 (客戶端程式需要先匯入這個包),這被稱為匯出(像面嚮物件語言中的 public);識別符號如果以小寫字母開頭,則對包外是不可見的,但是他們在整個包的內部是可見並且可用的 (像面嚮物件語言中的 private )
4.4 語句的結尾
Go語言中是不需要類似於Java需要冒號結尾,預設一行就是一條資料
如果你打算將多個語句寫在同一行,它們則必須使用;