新聞中心
Go 語(yǔ)言被設(shè)計(jì)成一門應(yīng)用于搭載 Web 服務(wù)器,存儲(chǔ)集群或類似用途的巨型中央服務(wù)器的系統(tǒng)編程語(yǔ)言。對(duì)于高性能分布式系統(tǒng)領(lǐng)域而言,Go 語(yǔ)言無(wú)疑比大多數(shù)其它語(yǔ)言有著更高的開(kāi)發(fā)效率。它提供了海量并行的支持,這對(duì)于游戲服務(wù)端的開(kāi)發(fā)而言是再好不過(guò)了,下面為大家詳細(xì)講解一下CentOS6.8中安裝GO語(yǔ)言具體方法。

10年積累的成都做網(wǎng)站、網(wǎng)站建設(shè)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有莎車免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
一、Go安裝使用
1、下載Go源碼包
https://storage.googleapis.com/golang/go1.6.3.linux-amd64.tar.gz
上傳到/usr/local/src目錄下
2、編譯安裝Go到/usr/local
tar zxvf go1.6.3.linux-amd64.tar.gz -C /usr/local/
#注:必須使用root賬戶或者使用sudo來(lái)解壓縮Go源碼包
3、設(shè)置PATH環(huán)境變量,添加/usr/local/go/bin到環(huán)境變量
export PATH=$PATH:/usr/local/go/bin
4、安裝到自定義位置
Go二進(jìn)制文件默認(rèn)安裝到/usr/local/go,但是可以安裝Go工具到不同的位置,可以自行定義,只需要設(shè)置正確的環(huán)境變量。
例如,安裝Go到家目錄下,必須添加環(huán)境變量到$HOME/.profile
export GOROOT=$HOME/go
export PATH=$PATH:$GOROOT/bin
注:安裝Go到其他目錄時(shí),GOROOT必須設(shè)置為環(huán)境變量
5、檢查是否正確安裝程序
通過(guò)設(shè)置一個(gè)工作區(qū)和建立一個(gè)簡(jiǎn)單的程序,檢查是否正確安裝了一個(gè)簡(jiǎn)單的程序。創(chuàng)建一個(gè)目錄包含您的工作空間,例如/data/work,并設(shè)置GOPATH環(huán)境變量指向的位置。
export GOPATH=/data/work
#如果不存在/data/work,需要新建
然后,在你的工作內(nèi)創(chuàng)建src/github.com/user/hello,如果使用github,可以使用自己的用戶名代替user,在hello目錄下,新建hello.go
# cat hello.go
package main
import "fmt"
func main {
fmt.Printf("hello,world!\n")
}
#使用go編譯hello.go
go install github.com/user/hello
#上面的命令講名叫hello(or hello.exe)的程序放到你的工作區(qū)內(nèi),執(zhí)行下面命令,會(huì)得到輸出結(jié)果。
$GOPATH/bin/hello
hello,world!
#當(dāng)出現(xiàn)hello,world!表明Go已經(jīng)安裝成功可以工作。
二、Go工作區(qū)介紹
1、機(jī)構(gòu)組織代碼概述
Go語(yǔ)言程序通常將所有的代碼保存在一個(gè)工作區(qū)中。
工作區(qū)包含許多版本控制庫(kù)(由Git管理)。
每個(gè)存儲(chǔ)庫(kù)包含一個(gè)或多個(gè)包。
每個(gè)包由一個(gè)或多個(gè)在一個(gè)目錄中的源文件組成。
一個(gè)包的目錄的路徑?jīng)Q定其導(dǎo)入路徑。
注:同于其他的編程環(huán)境中,每一個(gè)項(xiàng)目都有一個(gè)獨(dú)立的工作區(qū)且工作區(qū)是緊密聯(lián)系在一起的版本控制庫(kù)。
2、工作區(qū)介紹
工作區(qū)是一個(gè)目錄層次結(jié)構(gòu),它的根目錄有三個(gè)目錄:
src 包含Go源文件
pkg 包含對(duì)象和包
bin 包含可執(zhí)行命令 Go工具創(chuàng)建源碼包并安裝二進(jìn)制文件到pkg和bin目錄下 src目錄通常包含多個(gè)版本控制庫(kù)(如Git或Mercurial),跟蹤一個(gè)或多個(gè)源包的開(kāi)發(fā)。 下面展示一個(gè)好的工作區(qū)的例子:
bin/hello # command executableoutyet # command executablepkg/linux_amd64/github.com/golang/example/stringutil.a # package objectsrc/github.com/golang/example/.git/ # Git repository metadatahello/hello.go # command sourceoutyet/main.go # command sourcemain_test.go # test sourcestringutil/reverse.go # package sourcereverse_test.go # test sourcegolang.org/x/image/.git/ # Git repository metadatabmp/reader.go # package sourcewriter.go # package source... (many more repositories and packages omitted) ...
上面的屬性圖展示了一個(gè)包含兩個(gè)存儲(chǔ)庫(kù)(example和image)的工作區(qū),example 存儲(chǔ)庫(kù)包含兩個(gè)命令(hello,outyet),image庫(kù)包含bmp包和幾個(gè)其他的包。
一個(gè)典型的工作區(qū)包含包含許多軟件包和命令的多個(gè)源庫(kù)。大多數(shù)程序員將所有的源代碼和依賴關(guān)系保存在一個(gè)工作區(qū)中
3、GOPATH環(huán)境變量設(shè)置
GOPATH環(huán)境變量指定工作區(qū)的位置。它很可能是唯一的環(huán)境變量,代碼開(kāi)發(fā)時(shí)需要設(shè)置。
開(kāi)始,創(chuàng)建一個(gè)工作區(qū)目錄并設(shè)置相應(yīng)的gopath。您的工作區(qū)可以位于任何你喜歡的地方,但我們將在這個(gè)文檔中使用/data/work。請(qǐng)注意,這不能是您的“Go安裝”路徑相同。
mkdir -p /data/workexport GOPATH=/data/work
為了方便。添加工作區(qū)的bin到PATH中
export PATH=$PATH:$GOPATH/bin
4、導(dǎo)入路徑
一個(gè)導(dǎo)入路徑是唯一標(biāo)識(shí)一個(gè)包的字符串。一個(gè)包的導(dǎo)入路徑對(duì)應(yīng)于它在工作區(qū)內(nèi)或遠(yuǎn)程存儲(chǔ)庫(kù)中的位置。
從標(biāo)準(zhǔn)庫(kù)的軟件包中給出了短的導(dǎo)入路徑等。對(duì)于您自己的包,您必須選擇不可能和未來(lái)添加到標(biāo)準(zhǔn)庫(kù)或其他外部庫(kù)的基礎(chǔ)路徑?jīng)_突的路徑。
注意,你不需要將你的代碼發(fā)布到一個(gè)遠(yuǎn)程存儲(chǔ)庫(kù)之前,你可以建立它。這只是一個(gè)很好的習(xí)慣來(lái)組織你的代碼,如果你有一天會(huì)出版它。在實(shí)踐中,你可以選擇任何任意的路徑名稱,只要它是唯一的標(biāo)準(zhǔn)庫(kù)和更大的去生態(tài)系統(tǒng)。
我們將使用github.com/user作為我們的基本路徑。在您的工作區(qū)中創(chuàng)建一個(gè)目錄,以保持源代碼:
mkdir -p $GOPATH/src/github.com/user
5、第一個(gè)項(xiàng)目
編譯并運(yùn)行一個(gè)簡(jiǎn)單的程序,首先選擇一個(gè)包的路徑(我們將使用github.com/user/hello)和創(chuàng)建在您的工作區(qū)相應(yīng)的軟件包目錄:
mkdir $GOPATH/src/github.com/user/hello
創(chuàng)建名叫hello.go的文件,上面創(chuàng)建過(guò),此處略過(guò)。
cd $GOPATH/src/github.com/user/hellogo install$GOPATH/bin/hello
或者:
hello
如果你使用的是一個(gè)源代碼管理系統(tǒng),現(xiàn)在是一個(gè)很好的時(shí)間來(lái)初始化一個(gè)存儲(chǔ)庫(kù),添加文件,并提交你的第一次更改。再次,這一步是可選的:您不需要使用源代碼管理來(lái)寫代碼。
cd $GOPATH/src/github.com/user/hellogit initInitialized empty Git repository in /data/work/src/github.com/user/hello/.git/git add hello.gogit commit -m "first commit"[master (root-commit) bbfb477] first commit
6、first library
mkdir $GOPATH/src/github.com/user/stringutil
下一步,在目錄下創(chuàng)建一個(gè)名為reverse.go文件中有下列內(nèi)容:
// Package stringutil contains utility functions for working with strings.package stringutil// Reverse returns its argument string reversed rune-wise left to right.func Reverse(s string) string {r := []rune(s)for i, j := 0, len(r)-1; i return string(r)}
使用go build測(cè)試包的編譯
$ go build github.com/user/stringutil
如果當(dāng)前位置源碼包目錄,只需要:
go build
上面操作并不會(huì)產(chǎn)生一個(gè)輸出文件,必須使用go install,把包和對(duì)象輸出到工作去的pkg目錄內(nèi)
確認(rèn)stringutil包創(chuàng)建完成后,修改原始hello.go,使用stringutil包:
package mainimport ("fmt""github.com/user/stringutil")func main() {fmt.Printf(stringutil.Reverse("\n !oG ,olleH"))}
無(wú)論使用go安裝包還是二進(jìn)制文件,所有相關(guān)的依賴都會(huì)自動(dòng)安裝。所以當(dāng)你安裝hello程序時(shí):
$ go install github.com/user/hello
對(duì)應(yīng)的stringutil包會(huì)自動(dòng)安裝好。
執(zhí)行新的hello程序,可以看到消息已經(jīng)被反轉(zhuǎn)
# hello
Hello, Go!
完成上面操作之后,工作區(qū)應(yīng)該為:
├── bin
│ └── hello # command executable
├── pkg
│ └── linux_amd64 # this will reflect your OS and architecture
│ └── github.com
│ └── user
│ └── stringutil.a # package object
└── src
└── github.com
└── user
├── hello
│ └── hello.go # command source
└── stringutil
└── reverse.go # package source
注意:go install會(huì)把庫(kù)文件stringutil.a放到pkg/linux_amd64下邊(目錄結(jié)構(gòu)跟源代碼結(jié)構(gòu)一樣)。這樣可以go命令可以直接找到對(duì)應(yīng)的包對(duì)象,避免不必要的重復(fù)編譯。linux_amd64是為了根據(jù)操作系統(tǒng)和你的系統(tǒng)架構(gòu)交叉編譯。
所有Go可執(zhí)行程序都通過(guò)靜態(tài)方式鏈接在一起,所以在運(yùn)行時(shí)是不需要相關(guān)的包對(duì)象(庫(kù))。
7、包命令
所有的Go源代碼都以下面的語(yǔ)句開(kāi)始:
package name
其中name就是包引用默認(rèn)的名稱,一個(gè)包中的所有文件必須使用同一個(gè)包名,可執(zhí)行命令必須是main。
一個(gè)二進(jìn)制文件下所有的包名不需要唯一,但是引用路徑必須唯一
8、測(cè)試
Go自帶了一個(gè)輕量級(jí)的測(cè)試框架,由go test和testing包組成。
可以通過(guò)新建xx_test.go寫一個(gè)測(cè)試,其中包含若干個(gè)TestXXX函數(shù)。測(cè)試框架會(huì)自動(dòng)執(zhí)行這些函數(shù);如果函數(shù)中包含tError或t.Fail, 對(duì)應(yīng)的測(cè)試會(huì)被判為失敗。
添加一個(gè)針對(duì)stringutil的測(cè)試文件$GOPATH/src/github.com/user/stringutil/reverse_test.go,包含以下內(nèi)容:
package stringutil
import "testing"
func TestReverse(t *testing.T) {
cases := []struct {
in, want string
}{
{"Hello, world", "dlrow ,olleH"},
{"Hello, 世界", "界世,olleH"},
{"", ""},
}
for _, c := range cases {
got := Reverse(c.in)
if got != c.want {
t.Errorf("Reverse(%q) == %q, want %q", c.in, got, c.want)
}
}
}
#通過(guò)go test測(cè)試
# go test github.com/user/stringutil
ok github.com/user/stringutil 0.002s
#同樣的,在包文件夾下可以忽略路徑而直接執(zhí)行g(shù)o test
[root@zabbix stringutil]# go test
PASS
ok github.com/user/stringutil 0.002s
9、遠(yuǎn)程包
包的引用路徑用來(lái)描述如何通過(guò)版本控制系統(tǒng)獲取包的源代碼。go工具通過(guò)引用路徑自動(dòng)從遠(yuǎn)程代碼倉(cāng)庫(kù)獲取包文件。比如本文中用的例子也對(duì)應(yīng)的保存在github.com/golang/example下。go可以通過(guò)包的代碼倉(cāng)庫(kù)的url直接獲取、生成、安裝對(duì)應(yīng)的包。
[root@zabbix ~]# go get github.com/golang/example/hello
[root@zabbix ~]# $GOPATH/bin/hello
Hello, Go examples!
如果工作區(qū)中不存在對(duì)應(yīng)的包,go會(huì)將對(duì)應(yīng)的包放到GOPATH環(huán)境變量指明的工作區(qū)下。(如果包已經(jīng)存在,go跳過(guò)代碼拉去而直接執(zhí)行g(shù)o install)
執(zhí)行上邊的go get命令后,工作空間文件夾下是這樣的結(jié)果:
CentOS6.8配置GO語(yǔ)言開(kāi)發(fā)環(huán)境CentOS6.8配置GO語(yǔ)言開(kāi)發(fā)環(huán)境
github上的hello命令依賴于同個(gè)倉(cāng)庫(kù)下的stringutil庫(kù),hello.go使用同樣的路徑進(jìn)行導(dǎo)入,所以go get命令能夠直接找到并安裝對(duì)應(yīng)的依賴包。
import "github.com/golang/example/stringutil"
#通過(guò)這種方式共享Go包最好。
#注:關(guān)于go工具遠(yuǎn)程包的更多信息,參考:https://golang.org/cmd/go/#hdr-Remote_import_paths
10、官方地址
Go高效編程:https://golang.org/doc/effective_go.html
Go編程實(shí)例:https://tour.golang.org/welcome/
網(wǎng)站題目:CentOS6.8中安裝GO語(yǔ)言具體方法
標(biāo)題URL:http://m.5511xx.com/article/dpjpcjo.html


咨詢
建站咨詢
