作者:李驍
Go語(yǔ)言是一門全新的靜態(tài)類型開(kāi)發(fā)語(yǔ)言,具有自動(dòng)垃圾回收,豐富的內(nèi)置類型, 函數(shù)多返回值,錯(cuò)誤處理,匿名函數(shù), 并發(fā)編程,反射,defer等關(guān)鍵特征,并具有簡(jiǎn)潔、安全、并行、開(kāi)源等特性。從語(yǔ)言層面支持并發(fā),可以充分的利用CPU多核,Go語(yǔ)言編譯的程序可以媲美C或C++代碼的速度,而且更加安全、支持并行進(jìn)程。系統(tǒng)標(biāo)準(zhǔn)庫(kù)功能完備,尤其是強(qiáng)大的網(wǎng)絡(luò)庫(kù)讓建立Web服務(wù)成為再簡(jiǎn)單不過(guò)的事情。簡(jiǎn)單易學(xué),內(nèi)置runtime,支持繼承、對(duì)象等,開(kāi)發(fā)工具豐富,例如gofmt工具,自動(dòng)格式化代碼,讓團(tuán)隊(duì)代碼風(fēng)格完美統(tǒng)一。同時(shí)Go非常適合用來(lái)進(jìn)行服務(wù)器編程,網(wǎng)絡(luò)編程,包括Web應(yīng)用、API應(yīng)用,分布式編程等等。
“Go讓我體驗(yàn)到了從未有過(guò)的開(kāi)發(fā)效率。”谷歌資深工程師羅布·派克(Rob Pike)如是說(shuō)道,和C++或C一樣,Go是一種系統(tǒng)語(yǔ)言,他表示,“使用它可以進(jìn)行快速開(kāi)發(fā),同時(shí)它還是一個(gè)真正的編譯語(yǔ)言,我們之所以現(xiàn)在將其開(kāi)源,原因是我們認(rèn)為它已經(jīng)非常有用和強(qiáng)大。”
Go語(yǔ)言自2009年面世以來(lái),已經(jīng)有越來(lái)越多的公司開(kāi)始轉(zhuǎn)向Go語(yǔ)言開(kāi)發(fā),比如騰訊、百度、阿里、京東、小米以及360,而七牛云其技術(shù)棧基本上完全采用Go語(yǔ)言來(lái)開(kāi)發(fā)。還有像今日頭條、UBER這樣的公司,他們也使用Go語(yǔ)言對(duì)自己的業(yè)務(wù)進(jìn)行了徹底的重構(gòu)。在全球范圍內(nèi)Go語(yǔ)言的使用不斷增長(zhǎng),尤其是在云計(jì)算領(lǐng)域,用Go語(yǔ)言編寫的幾個(gè)主要云基礎(chǔ)項(xiàng)目如Docker和Kubernetes,都取得了巨大成功。除此之外,還有各種有名的項(xiàng)目如etcd/consul/flannel等等,均使用Go語(yǔ)言實(shí)現(xiàn)。
Go語(yǔ)言有兩快,一是編譯運(yùn)行快,還有一個(gè)是學(xué)習(xí)上手快。Go語(yǔ)言的學(xué)習(xí)曲線并不陡峭,無(wú)論是剛開(kāi)始接觸編程的朋友,還是有其他語(yǔ)言開(kāi)發(fā)經(jīng)驗(yàn)而打算學(xué)習(xí)Go語(yǔ)言的朋友,大家都可以放心大膽來(lái)學(xué)習(xí)和了解Go語(yǔ)言,“它值得擁有!”
讓我們開(kāi)始Go語(yǔ)言學(xué)習(xí)之旅吧!
1.1 Go安裝
要用Go語(yǔ)言來(lái)進(jìn)行開(kāi)發(fā),需要先搭建開(kāi)發(fā)環(huán)境。Go 語(yǔ)言支持以下系統(tǒng):
- Linux
- FreeBSD
- Mac OS
- Windows
首先需要下載Go語(yǔ)言安裝包,Go語(yǔ)言的安裝包下載地址為:https://golang.org/dl/ , 國(guó)內(nèi)可以正常下載地址:https://golang.google.cn/dl/
源碼編譯安裝
Go語(yǔ)言是谷歌2009發(fā)布的第二款開(kāi)源編程語(yǔ)言。經(jīng)過(guò)幾年的版本更迭,目前Go已經(jīng)發(fā)布1.11版本,UNIX/Linux/Mac OS X,和 FreeBSD系統(tǒng)下可使用如下源碼安裝方法:
(1)下載源碼包:https://golang.google.cn/dl/go1.11.1.linux-amd64.tar.gz
(2)將下載的源碼包解壓至 /usr/local目錄:
tar -C /usr/local -xzf go1.11.1.linux-amd64.tar.gz
(3)將 /usr/local/go/bin 目錄添加至PATH環(huán)境變量:
export PATH=$PATH:/usr/local/go/bin
(4)設(shè)置GOPATH,GOROOT環(huán)境變量:
GOPATH是工作目錄,GOROOT為Go的安裝目錄,這里為/usr/local/go/
注意:MAC系統(tǒng)下你可以使用 .pkg 結(jié)尾的安裝包直接雙擊來(lái)完成安裝,安裝目錄在 /usr/local/go/ 下。
Windows系統(tǒng)下安裝
我們?cè)赪indows系統(tǒng)下一般采用直接安裝,下載go1.11.1.windows-amd64.zip版本,直接解壓到安裝目錄D:\Go,然后把D:\Go\bin目錄添加到 PATH 環(huán)境變量中。
另外,還需要設(shè)置2個(gè)重要環(huán)境變量:
GOPATH=D:\goproject
GOROOT=D:\Go\
以上三個(gè)環(huán)境變量設(shè)置好后,我們就可以開(kāi)始正式使用Go語(yǔ)言來(lái)開(kāi)發(fā)了。
Windows系統(tǒng)也可以選擇go1.11.1.windows-amd64.msi,雙擊運(yùn)行程序根據(jù)提示來(lái)操作。
GOPATH是我們的工作目錄,可以有多個(gè),用分號(hào)隔開(kāi)。
GOROOT為Go的安裝目錄。
Win+R打開(kāi)CMD(注意:設(shè)置環(huán)境變量后需要重新打開(kāi)CMD),輸入 go ,如下顯示說(shuō)明Go語(yǔ)言運(yùn)行環(huán)境已經(jīng)安裝成功:
D:\goproject\src>go
Go is a tool for managing Go source code.
Usage:
go <command> [arguments]
The commands are:
bug start a bug report
build compile packages and dependencies
clean remove object files and cached files
doc show documentation for package or symbol
env print Go environment information
fix update packages to use new APIs
fmt gofmt (reformat) package sources
generate generate Go files by processing source
get download and install packages and dependencies
install compile and install packages and dependencies
list list packages or modules
mod module maintenance
run compile and run Go program
test test packages
tool run specified go tool
version print Go version
vet report likely mistakes in packages
Use "go help <command>" for more information about a command.
Additional help topics:
buildmode build modes
c calling between Go and C
cache build and test caching
environment environment variables
filetype file types
go.mod the go.mod file
gopath GOPATH environment variable
gopath-get legacy GOPATH go get
goproxy module proxy protocol
importpath import path syntax
modules modules, module versions, and more
module-get module-aware go get
packages package lists and patterns
testflag testing flags
testfunc testing functions
Use "go help <topic>" for more information about that topic.
另外,我們輸入go version,可看到我們安裝的Go版本,如圖所示:
在本書中,所有代碼編譯運(yùn)行和標(biāo)準(zhǔn)庫(kù)的說(shuō)明講解都基于go1.11,還沒(méi)有升級(jí)的用戶請(qǐng)及時(shí)升級(jí)。
$GOPATH允許多個(gè)目錄,當(dāng)有多個(gè)目錄時(shí),請(qǐng)注意分隔符,多個(gè)目錄的時(shí)候Windows是分號(hào);
當(dāng)有多個(gè)$GOPATH時(shí)默認(rèn)將go get獲取的包存放在第一個(gè)目錄下。
$GOPATH目錄約定有三個(gè)子目錄
- src存放源代碼(比如:.go .c .h .s等) 按照Go 默認(rèn)約定,go run,go install等命令的當(dāng)前工作路徑(即在此路徑下執(zhí)行上述命令)。
- pkg編譯時(shí)生成的中間文件(比如:.a)
- bin編譯后生成的可執(zhí)行文件,接下來(lái)就可以試試代碼編譯運(yùn)行了。
文件名: test.go,代碼如下:
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
使用go命令執(zhí)行以上代碼輸出結(jié)果如下:
D:\goproject>go run test.go
Hello,World!
1.2 Go語(yǔ)言開(kāi)發(fā)工具
LiteIDE是一款開(kāi)源、跨平臺(tái)的輕量級(jí) Go 語(yǔ)言集成開(kāi)發(fā)環(huán)境(IDE)。在安裝LiteIDE之前一定要先安裝Go語(yǔ)言環(huán)境。LiteIDE支持以下的操作系統(tǒng):
Windows x86 (32-bit or 64-bit)
Linux x86 (32-bit or 64-bit)
LiteIDE可以通過(guò)以下途徑下載:
下載地址:https://sourceforge.net/projects/liteide/files/
源碼地址:https://github.com/visualfc/liteide
golang中國(guó):https://www.golangtc.com/download/liteide
也提供下載,國(guó)內(nèi)下載速度可能會(huì)快一些,但版本更新較慢,建議還是選擇官方地址下載。
Windows直接安裝:
Windows下選擇 liteidex35.1.windows-qt5.9.5.zip,下載之后解壓,在liteide\bin文件夾下找到liteide.exe,雙擊運(yùn)行。
如果不出意外,將會(huì)出現(xiàn)LiteIDE的運(yùn)行界面。
有關(guān)LiteIDE 的使用相對(duì)來(lái)說(shuō)比較簡(jiǎn)單,很容易上手,就不在此細(xì)說(shuō)了。
源碼編譯安裝:
LiteIDE源碼位于https://github.com/visualfc/liteide上。需要使用Qt4/Qt5來(lái)編譯源代碼,Qt庫(kù)可以從https://qt-project.org/downloads上獲取。Mac OS X用戶可以不從源代碼編譯Qt,直接在終端中運(yùn)行brew update && brew install qt,節(jié)省大量時(shí)間。
有關(guān)LiteIDE 安裝的更多說(shuō)明請(qǐng)?jiān)L問(wèn): http://liteide.org/cn/doc/install/
其他的開(kāi)發(fā)工具還有Eclipse以及其集成goeclipse開(kāi)發(fā)插件,以及Sublime text等,可以根據(jù)個(gè)人喜好情況選擇使用。
現(xiàn)在Go 語(yǔ)言和開(kāi)發(fā)工具我們都已經(jīng)安裝完成,接下來(lái)我們開(kāi)始學(xué)習(xí)Go的基礎(chǔ)知識(shí),并實(shí)際使用他們來(lái)進(jìn)行練習(xí)和開(kāi)發(fā)。
本書《Go語(yǔ)言四十二章經(jīng)》內(nèi)容在github上同步地址:https://github.com/ffhelicopter/Go42
雖然本書中例子都經(jīng)過(guò)實(shí)際運(yùn)行,但難免出現(xiàn)錯(cuò)誤和不足之處,煩請(qǐng)您指出;如有建議也歡迎交流。
聯(lián)系郵箱:roteman@163.com