Go語(yǔ)言開(kāi)發(fā)(一)、Go語(yǔ)言簡(jiǎn)介-創(chuàng)新互聯(lián)

Go語(yǔ)言開(kāi)發(fā)(一)、Go語(yǔ)言簡(jiǎn)介

一、Go語(yǔ)言簡(jiǎn)介

1、Go語(yǔ)言簡(jiǎn)介

Go,全稱(chēng)golang,是Google開(kāi)發(fā)的一種靜態(tài)強(qiáng)類(lèi)型、編譯型、并發(fā)型并具有垃圾回收功能的編程語(yǔ)言。 Go從2007年末由Robert Griesemer、Rob Pike、Ken Thompson(C語(yǔ)言發(fā)明者)主持開(kāi)發(fā),于2009年11月正式宣布成為開(kāi)放源代碼項(xiàng)目,并在Linux及Mac OS X平臺(tái)上進(jìn)行了實(shí)現(xiàn),后續(xù)增加了Windows平臺(tái)的實(shí)現(xiàn)。2012年初,Go語(yǔ)言官方發(fā)布了Go 1.0穩(wěn)定版本,目前Go語(yǔ)言基于1.x每半年發(fā)布一個(gè)版本。

創(chuàng)新互聯(lián)公司主打移動(dòng)網(wǎng)站、網(wǎng)站制作、做網(wǎng)站、網(wǎng)站改版、網(wǎng)絡(luò)推廣、網(wǎng)站維護(hù)、域名申請(qǐng)、等互聯(lián)網(wǎng)信息服務(wù),為各行業(yè)提供服務(wù)。在技術(shù)實(shí)力的保障下,我們?yōu)榭蛻?hù)承諾穩(wěn)定,放心的服務(wù),根據(jù)網(wǎng)站的內(nèi)容與功能再?zèng)Q定采用什么樣的設(shè)計(jì)。最后,要實(shí)現(xiàn)符合網(wǎng)站需求的內(nèi)容、功能與設(shè)計(jì),我們還會(huì)規(guī)劃穩(wěn)定安全的技術(shù)方案做保障。

2、Go語(yǔ)言的優(yōu)點(diǎn)

Go語(yǔ)言?xún)?yōu)點(diǎn)如下:
A、可直接編譯成機(jī)器碼
B、豐富的標(biāo)準(zhǔn)庫(kù)支持
C、內(nèi)置強(qiáng)大的工具
D、支持跨平臺(tái)編譯
E、支持自動(dòng)垃圾回收
F、更豐富的內(nèi)置類(lèi)型支持
G、支持函數(shù)多返回值
H、錯(cuò)誤處理支持
I、支持匿名函數(shù)和閉包
J、支持類(lèi)型和接口
L、支持并發(fā)編程
M、支持反射
N、支持與C語(yǔ)言交互

3、Go語(yǔ)言的缺點(diǎn)

Go語(yǔ)言缺點(diǎn)如下:
A、缺少框架
B、軟件包管理不完善

4、Go語(yǔ)言用途

Go語(yǔ)言主要用途如下:
A、服務(wù)器編程,如處理日志、數(shù)據(jù)打包、虛擬機(jī)處理、文件系統(tǒng)等
B、分布式系統(tǒng),數(shù)據(jù)庫(kù)代理器等
C、網(wǎng)絡(luò)編程,如Web應(yīng)用、API應(yīng)用、下載應(yīng)用
D、內(nèi)存數(shù)據(jù)庫(kù),如groupcache、couchbase的部分組建
E、云平臺(tái),目前國(guó)外很多云平臺(tái)在采用Go開(kāi)發(fā),CloudFoundy的部分組建,前VMare的技術(shù)總監(jiān)自己出來(lái)搞的apcera云平臺(tái)。

二、Go語(yǔ)言環(huán)境安裝

1、Go語(yǔ)言環(huán)境下載

Go語(yǔ)言支持以下系統(tǒng):
A、Linux
B、FreeBSD
C、Mac OS X(Darwin)
D、Windows
Go語(yǔ)言環(huán)境安裝包下載地址:
https://golang.org/dl/
https://golang.google.cn/dl/
Go語(yǔ)言開(kāi)發(fā)(一)、Go語(yǔ)言簡(jiǎn)介
根據(jù)操作系統(tǒng)平臺(tái)下載相應(yīng)的Go語(yǔ)言環(huán)境安裝包。

2、Linux平臺(tái)安裝Go語(yǔ)言環(huán)境

將下載的源碼包解壓至/usr/local目錄
sudo tar -C /usr/local -xzf go1.10.1.linux-amd64.tar.gz
將 /usr/local/go/bin目錄添加至PATH環(huán)境變量
export PATH=$PATH:/usr/local/go/bin

3、MAC平臺(tái)安裝Go語(yǔ)言環(huán)境

MAC平臺(tái)可以使用.pkg結(jié)尾的安裝包直接雙擊來(lái)完成安裝,安裝目錄在 /usr/local/go/下。
brew install go

4、Windows平臺(tái)安裝Go語(yǔ)言環(huán)境

Windows平臺(tái)可以使用.msi 后綴的安裝包來(lái)安裝。
默認(rèn)情況下.msi文件會(huì)安裝在c:\Go目錄下,可以將 c:\Go\bin目錄添加到PATH環(huán)境變量中。添加后需要重啟命令窗口才能生效。

三、Go命令行工具

1、Go命令簡(jiǎn)介

Go語(yǔ)言自帶有一套完整的命令操作工具,可以通過(guò)在命令行中執(zhí)行g(shù)o或go help來(lái)查看:
Go語(yǔ)言開(kāi)發(fā)(一)、Go語(yǔ)言簡(jiǎn)介

2、go build

go build命令主要用于測(cè)試編譯。在包的編譯過(guò)程中,若有必要,會(huì)同時(shí)編譯與依賴(lài)包。
如果是普通包,執(zhí)行g(shù)o build命令后不會(huì)產(chǎn)生任何文件。
如果是main包,執(zhí)行g(shù)o build命令后,會(huì)在當(dāng)前目錄下生成一個(gè)可執(zhí)行文件。如果需要在$GOPATH/bin木下生成相應(yīng)的exe文件,需要執(zhí)行g(shù)o install 或者使用 go build -o 路徑/a.exe。
如果某個(gè)文件夾下有多個(gè)文件,而只想編譯其中某一個(gè)文件,可以在go build之后加上文件名,例如go build a.go。go build命令默認(rèn)會(huì)編譯當(dāng)前目錄下的所有g(shù)o文件。
可以指定編譯輸出的文件名。比如,可以指定go build -o myapp,默認(rèn)情況是package名(非main包),或者是第一個(gè)源文件的文件名(main包)。
go build會(huì)忽略目錄下以"_"或者”."開(kāi)頭的go文件。
如果源代碼針對(duì)不同的操作系統(tǒng)需要不同的處理,那么可以根據(jù)不同的操作系統(tǒng)后綴來(lái)命名文件。例如有一個(gè)讀取數(shù)組的程序,對(duì)于不同的操作系統(tǒng)可能有如下幾個(gè)源文件:

array_linux.go 
array_darwin.go 
array_windows.go 
array_freebsd.go

go build時(shí)會(huì)選擇性地編譯以系統(tǒng)名結(jié)尾的文件(Linux、Darwin、Windows、Freebsd)。Linux系統(tǒng)下面編譯只會(huì)選擇array_linux.go文件,其它系統(tǒng)命名后綴文件全部忽略。
如果直接使用,表示試圖編譯當(dāng)前目錄所對(duì)應(yīng)的代碼包,如果當(dāng)前目錄不是一個(gè)有效的代碼包(包含在 $GOPATH/src 目錄下)則會(huì)報(bào)錯(cuò);如果帶上代碼包名,則表示編譯指定的代碼包;如果帶上源碼文件,則表示編譯指定源碼文件。
GO語(yǔ)言的源碼文件分為三類(lèi),包括命令源碼文件、庫(kù)源碼文件和測(cè)試源碼文件。如果編譯的是命令源碼文件,或包含命令源碼文件的包(main包)時(shí),編譯通過(guò)后會(huì)生成可執(zhí)行文件;反之則不會(huì)生成任何文件,只是做檢查性編譯。
可以在執(zhí)行g(shù)o build命令時(shí),加上一些標(biāo)記,如:
-v 標(biāo)記,可以把命令執(zhí)行過(guò)程中構(gòu)建的包名(包含編譯過(guò)程中依賴(lài)的包)打印出來(lái),如果 go build 的是一個(gè)源碼文件,則會(huì)打印出的包名為?command-line-arguments,這是編譯源碼文件時(shí)生成的虛擬包名,所以看到不用覺(jué)得奇怪。
-x 標(biāo)記,可以打印編譯期間所用到的所有shell命令。
-o 標(biāo)記,用來(lái)指定生成文件的路徑和名稱(chēng)。
-a 標(biāo)記,強(qiáng)制重新編譯。
-buildmode=shared標(biāo)記,指定當(dāng)前編譯生成的結(jié)果類(lèi)型,如靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)。GO語(yǔ)言默認(rèn)使用靜態(tài)編譯,好處是部署時(shí)非常簡(jiǎn)單,但使用動(dòng)態(tài)庫(kù),可以減少分發(fā)包的大小。目前在windows下尚不支持編譯成動(dòng)態(tài)庫(kù)。
如果是直接使用,表示試圖編譯當(dāng)前目錄所對(duì)應(yīng)的代碼包,如果當(dāng)前目錄不是一個(gè)有效的代碼包(包含在 $GOPATH/src 目錄下)則會(huì)報(bào)錯(cuò);如果帶上代碼包名,則表示編譯指定的代碼包;如果帶上源碼文件,則表示編譯指定源碼文件。

3、go clean

go clean命令用來(lái)移除當(dāng)前源碼包里面編譯生成的文件,包括:
_obj/ 舊的object目錄,由Makefiles遺留
_test/ 舊的test目錄,由Makefiles遺留
_testmain.go 舊的gotest文件,由Makefiles遺留
test.out 舊的test記錄,由Makefiles遺留
build.out 舊的test記錄,由Makefiles遺留
*.[568ao] object文件,由Makefiles遺留
DIR(.exe) 由 go build 產(chǎn)生
DIR.test(.exe) 由 go test -c 產(chǎn)生
MAINFILE(.exe) 由 go build MAINFILE.go產(chǎn)生

4、go fmt

go fmt命令主要用來(lái)格式化代碼文件。
開(kāi)發(fā)工具一般都帶有保存時(shí)自動(dòng)格式化功能,底層其實(shí)就是調(diào)用了go fmt 命令。
gofmt -w src,可以格式化整個(gè)項(xiàng)目。

5、go get

go get命令主要用來(lái)動(dòng)態(tài)獲取遠(yuǎn)程代碼包,目前支持BitBucket、GitHub、Google Code和Launchpad。go get命令在內(nèi)部分成兩步操作:第一步是下載源碼包,第二步是執(zhí)行g(shù)o install。下載源碼包的go工具會(huì)自動(dòng)根據(jù)不同的域名調(diào)用不同的源碼工具,對(duì)應(yīng)關(guān)系如下:

BitBucket (Mercurial Git)
GitHub (Git)
Google Code Project Hosting (Git, Mercurial, Subversion)
Launchpad (Bazaar)

為了go get能正常工作,必須確保安裝合適的源碼管理工具,并同時(shí)把源碼管理工具命令加入到PATH中。
go get 命令本質(zhì)上是首先通過(guò)源碼工具clone代碼到src目錄,然后執(zhí)行g(shù)o install。

6、go install

go install命令在內(nèi)部分成兩步操作:第一步是生成結(jié)果文件(可執(zhí)行文件或者.a包),第二步會(huì)把編譯好的結(jié)果移到?$GOPATH/pkg 或者$GOPATH/bin。
.exe文件: 一般是go install帶main函數(shù)的go文件產(chǎn)生的,有函數(shù)入口,所有可以直接運(yùn)行。
.a應(yīng)用包: 一般是 go install不包含main函數(shù)的go文件產(chǎn)生的,沒(méi)有函數(shù)入口,只能被調(diào)用。

7、go test

go test命令會(huì)自動(dòng)讀取源碼目錄下面名為*_test.go的文件,生成并運(yùn)行測(cè)試用的可執(zhí)行文件。
默認(rèn)不需要任何參數(shù),go test命令會(huì)自動(dòng)把源碼包里所有test文件測(cè)試完畢,幫助信息可以使用go help testflag查看。
進(jìn)行單元測(cè)試的工具,單元測(cè)試代碼建議與被測(cè)試代碼放在同一個(gè)代碼包中,并以 "_test.go" 為后綴,測(cè)試函數(shù)建議以"Test"為名稱(chēng)前綴。go test命令可以對(duì)代碼包進(jìn)行測(cè)試,也可以指定某個(gè)測(cè)試代碼文件運(yùn)行(要一并帶上被測(cè)試代碼文件)

8、go doc

go doc命令是一個(gè)很強(qiáng)大的文檔工具,用于查看文檔,如查看builti包執(zhí)行g(shù)o doc builtin,查看http包執(zhí)行g(shù)o doc net/http。查看某一個(gè)包里的函數(shù),執(zhí)行g(shù)o doc fmt Printf,也可以查看函數(shù)相應(yīng)的代碼,執(zhí)行g(shù)o doc -src fmt Printf。
通過(guò)命令在命令行執(zhí)行g(shù)odoc -http=:端口號(hào),比如godoc -http=:8080。然后在瀏覽器中打開(kāi)127.0.0.1:8080,會(huì)看到一個(gè)golang.org的本地copy版本,通過(guò)網(wǎng)頁(yè)可以查詢(xún)pk文檔等其它內(nèi)容。如果設(shè)置了GOPATH,pkg分類(lèi)下會(huì)列出標(biāo)準(zhǔn)包的文檔,本地GOPATH中所有項(xiàng)目的相關(guān)文檔。

9、go fix

go fix用來(lái)修復(fù)老版本的代碼到新版本,例如go1前老版本的代碼轉(zhuǎn)化到go1。

10、go version

go version命令用于查看go當(dāng)前的版本。

11、go env

go env命令用于查看當(dāng)前go的環(huán)境變量,用于打印GO語(yǔ)言的環(huán)境信息,如GOPATH是工作區(qū)目錄,GOROOT是GO語(yǔ)言安裝目錄,GOBIN是通過(guò)go install命令生成可執(zhí)行文件的存放目錄(默認(rèn)是當(dāng)前工作區(qū)的bin目錄下),GOEXE為生成可執(zhí)行文件的后綴。

12、go list

go list命令用于列出當(dāng)前全部安裝的package。

13、go run

go run命令用于編譯并運(yùn)行Go程序,只能作用于命令源碼文件,一般用于開(kāi)發(fā)中快速測(cè)試。

14、go tool

go tool命令工具,go tool pprof性能檢查工具,? ?go tool cgo跟C語(yǔ)言和GO語(yǔ)言有關(guān)的命令。

15、go vet

go vet是靜態(tài)檢查工具,用于一般項(xiàng)目快完成時(shí)進(jìn)行進(jìn)行優(yōu)化。

16、go bug

go bug命令用于GO語(yǔ)言調(diào)試。

17、go generate

通過(guò)掃描Go源碼中的特殊注釋來(lái)識(shí)別要運(yùn)行的常規(guī)命令。go generate不是go build的一部分,go generate不包含依賴(lài)關(guān)系分析,必須在運(yùn)行g(shù)o build前顯式運(yùn)行。go generate由Go package的作者使用,而不是其客戶(hù)端。

18、go help

go help xx命令用于查看幫助信息,如go help bug用于查看go bug的幫助信息。

四、Go語(yǔ)言開(kāi)發(fā)環(huán)境

1、LiteIDE

LiteIDE是一款開(kāi)源、跨平臺(tái)的輕量級(jí)Go語(yǔ)言集成開(kāi)發(fā)環(huán)境(IDE)。
下載地址 :http://sourceforge.net/projects/liteide/files/
源碼地址 :https://github.com/visualfc/liteide
Go語(yǔ)言開(kāi)發(fā)(一)、Go語(yǔ)言簡(jiǎn)介

2、GoLand

Goland是由捷克JetBrains公司旨在為go開(kāi)發(fā)者提供的一個(gè)符合人體工程學(xué)的新的商業(yè)IDE。Goland整合了IntelliJ平臺(tái)的有關(guān)go語(yǔ)言的編碼輔助功能和工具集成特點(diǎn),特點(diǎn)如下:
A、編碼輔助功能
Goland會(huì)分析開(kāi)發(fā)者代碼,在符號(hào)之間尋找連接。提供代碼提示,快速導(dǎo)航,靈活的錯(cuò)誤分析能力以及格式化和重構(gòu)功能。
B、符合人體工程學(xué)的設(shè)計(jì)
強(qiáng)大的靜態(tài)代碼分析能力和符合人體工程學(xué)的設(shè)計(jì),使開(kāi)發(fā)者不僅僅是在工作,更是一種愉快的編程體驗(yàn)。
C、工具的集成
關(guān)鍵任務(wù)工具,例如代碼覆蓋工具,功能齊全的調(diào)試器和版本控制都集成在一起,而不會(huì)有一些隨意安裝的插件。
D、IntelliJ插件生態(tài)系統(tǒng)
除了豐富的內(nèi)置工具,如果需要任何東西,在IntelliJ插件生態(tài)系統(tǒng)中都可以找到。
官方網(wǎng)址:https://www.jetbrains.com/go/
Goland安裝完后需要對(duì)Go開(kāi)發(fā)環(huán)境進(jìn)行配置。
Go語(yǔ)言開(kāi)發(fā)(一)、Go語(yǔ)言簡(jiǎn)介
點(diǎn)擊Configure->Settings菜單,配置如下:
Go語(yǔ)言開(kāi)發(fā)(一)、Go語(yǔ)言簡(jiǎn)介

五、Go語(yǔ)言示例

1、helloworld.go編寫(xiě)

package main
import "fmt"

func main() {
   fmt.Println("Hello, World!")}

2、編譯執(zhí)行

go run helloworld.go
打印出:Hello, World!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線(xiàn),公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿(mǎn)足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。

網(wǎng)站題目:Go語(yǔ)言開(kāi)發(fā)(一)、Go語(yǔ)言簡(jiǎn)介-創(chuàng)新互聯(lián)
本文網(wǎng)址:http://muchs.cn/article48/djehep.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、網(wǎng)站營(yíng)銷(xiāo)靜態(tài)網(wǎng)站、網(wǎng)站維護(hù)手機(jī)網(wǎng)站建設(shè)、品牌網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

小程序開(kāi)發(fā)