《Go語(yǔ)言四十二章經(jīng)》第一章 Go安裝與運(yùn)行

作者:李驍

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版本,如圖所示:

gv.png

在本書中,所有代碼編譯運(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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,197評(píng)論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,415評(píng)論 3 415
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 176,104評(píng)論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 62,884評(píng)論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,647評(píng)論 6 408
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 55,130評(píng)論 1 323
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,208評(píng)論 3 441
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 42,366評(píng)論 0 288
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,887評(píng)論 1 334
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,737評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,939評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,478評(píng)論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,174評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 34,586評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 35,827評(píng)論 1 283
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,608評(píng)論 3 390
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,914評(píng)論 2 372