標籤:state cat 安裝 臨時 通訊 執行檔案 語句 運行 linu
Go語言是Google推出的一種全新的程式設計語言,可以在不損失應用程式效能的情況下降低代碼的複雜性。Google首席軟體工程師羅布派克(Rob Pike)說:我們之所以開發Go,是因為過去10多年間軟體開發的難度令人沮喪。
Go語言特性
- 自動記憶體回收
- 記憶體自動回收,再也不需要開發人員管理記憶體
- 只需要new分配記憶體,不需要釋放
- 具有更豐富的內建類型
Go語言“不僅支援幾乎所有語言都支援的簡單內建類型(比如整型和浮點型等)外,還支援一些其他的進階類型,比如字典類型map、數組切片(Slice)。
- 支援函數多傳回值
在C,C++中,包括其他的一些進階語言是不支援多個函數傳回值的。但是這項功能又確實是需要的,所以在C語言中一般通過將傳回值定義成一個結構體,或者通過函數的參數引用的形式進行返回。而在Go語言中,作為一種新型的語言,目標定位為強大的語言當然不能放棄對這一需求的滿足,所以支援函數多傳回值是必須的。
- 支援高並發
Go語言引入了goroutine概念,它使得並發編程變得非常簡單。通過使用goroutine而不是裸用作業系統的並發機制,以及使用訊息傳遞來共用記憶體而不是使用共用記憶體來通訊,Go語言讓並發編程變得更加輕盈和安全。通過在函數調用前使用關鍵字go,我們即可讓該函數以goroutine方式執行,goroutine是一種比線程更加輕盈、更省資源的協程。
- 錯誤處理
在傳統的OOP編程中,為了捕獲程式的健壯性需要捕獲異常,使用的方法大都是try() catch{}模組,例如, 在下面的java代碼中,可能需要的操作是:
1 try{2 Statement stmt = ...;3 }4 catch(...){5 ...6 }7 finally{8 conn.close();9 }
而在Go中引入了三個關鍵字,分別是 defer、panic和recover,其中使用defer關鍵字語句的含義是不管程式是否出現異常,均在函數退出時自動執行相關代碼。
所以上面你的java代碼用Go進程重寫只有兩行:
1 conn := ...2 defer conn.Close()
Go語言安裝
Go 語言支援以下系統:
- Linux
- FreeBSD
- Mac OS X(也稱為 Darwin)
- Window
安裝包為:https://golang.org/dl/
Go語言安裝之後,C:\Go目錄下一共有9個目錄與9個檔案,如:
api — 目錄,包含所有API列表,方便IDE使用
bin— 目錄,存放編譯後的可執行檔
blog— 目錄,
doc— 目錄,協助文檔
lib— 目錄,
misc— 目錄,
pkg— 目錄,存放編譯後的包檔案。pkg中的檔案是Go編譯產生的
src— 目錄,存放項目源檔案
註:一般,bin和pkg目錄可以不建立,go命令會自動建立(如 go install),只需要建立src目錄即可。
常用的命令
go build
go build 命令用於編譯我們指定的源碼檔案或程式碼封裝以及它們的依賴包。
go build -o bin/tongbupan go_dev/tongbupan/main
-o :指定編譯後存放目錄以及名稱
go install
go install 命令在內部實際上分成了兩步操作:第一步是產生結果檔案(可執行檔或者.a包),第二步會把編譯好的結果移到 $GOPATH/pkg 或者 $GOPATH/bin。
go run
go run命令可以編譯並運行命令源碼檔案。
注意它不會產生 .exe 檔,只會產生一個臨時檔案(但),直接在命令列輸出程式執行結果,方便使用者調試。
go get
go get可以根據要求和實際情況從互連網上下載或更新指定的程式碼封裝及其依賴包,並對它們進行編譯和安裝。
go test
go test 命令,會自動讀取源碼目錄下面名為*_test.go的檔案,產生並運行測試用的可執行檔。
go clean
go clean命令會刪除掉執行其它命令時產生的一些檔案和目錄
go doc & godoc
go doc命令可以列印附於Go語言程式實體上的文檔。我們可以通過把程式實體的標識符作為該命令的參數來達到查看其文檔的目的。
godoc是一個很強大的工具,同樣用於展示指定程式碼封裝的文檔。
其他命令
Go語言還提供了其它有用的工具,例如:
go fix 用來修複以前老版本的代碼到新版本,例如go1之前老版本的代碼轉化到go1
go version 查看go當前的版本
go env 查看當前go的環境變數
go list 列出當前全部安裝的package
Go語言開發工具
GoLand
JetBrain的GoLand是一款功能強大的IDE,但只有30天的免費試用。
LiteIDE
LiteIDE是一個簡單的開源IDE。值得注意的是,它是Go語言2012年正式版發布的首個IDE,由Qt開發,它看起來感覺類似於Visual Studio和GCC C ++等其他編譯器。
由於它是為Golang直接設計的,LiteIDE為開發人員提供了許多有用的功能,包括可配置的構建命令,進階代碼編輯器和廣泛的Golang支援。其他功能包括代碼管理,gdb和Delve調試器,自動完成和使用WordApi的主題,基於MIME類型的系統等等。
VS Code
它是微軟開發的廣受歡迎的開源IDE,有一個開箱即用的Go擴充可供VS Code Code使用。vscode-go外掛程式為開發人員提供了更多功能,包括與許多Go工具整合。
VS Code通過IntelliSense,內建Git整合,直接從編輯器調試代碼等功能提供智能完成功能。VS Code具有高度可擴充性,並通過其許多擴充提供了許多自訂選項。它還提供了幾十種語言的支援,這使得它成為了受開發人員歡迎的工具。
Eclipse外掛程式GoClipse
GoClipse是Eclipse的外掛程式。使用GoClipse外掛程式,開發人員可以利用流行的Eclipse IDE進行編程。Eclipse IDE和GoClipse外掛程式都是免費和開源的。GoClipse編輯器為開發人員提供了廣泛的功能,包括原始碼編輯器,項目嚮導和構建器,以協助報告編輯器內構建的錯誤,以及功能齊全的GDB調試器支援。
開發環境搭建
windows:
官網下載go1.6.windows-amd64.msi安裝檔案,安裝位置選擇預設C:\Go\
安裝結束後配置環境變數Path: C:\Go\bin;
接著建立一個GOPATH環境變數,這個變數很重要,我自己寫的代碼要放到這個變數中配置的目錄中,go編譯器才會找到並編譯;
繼續建立一個GOROOT變數,配合go編譯器安裝的目 GOROOT:C:\Go\;
完成以上步驟後,開啟命令列輸入 # go version,就會出現go編譯器的版本號碼。
輸入# go env就可以看到正確的go環境。
Linux:
Linux部署golang,首先請在windows上自行安裝SSH遠程工具,比如Xshell4等。
1.安裝mercurial包(mercurial版本管理系統,可以輸出hg名字檢測是否安裝)
sudo apt-get install mercurial 或者# sudo easy_install mercurial
2.安裝git
sudo apt-get install git
3.安裝gcc
sudo apt-get install gcc
4.下載golang的壓縮包
wget https://storage.googleapis.com/golang/go1.6.linux-amd64.tar.gz
tar -zxvf go1.6.linux-amd64.tar.gz -C /home
將解壓的檔案夾改名為go
添加環境變數: # vi /etc/profile
在profile裡面添加如下內容
export GOROOT=/home/go
export PATH=$GOROOT/bin:$PATH
export GOPATH=/home/gopkg
GOPATH和GOROOT修改為你的路徑即可.
然後我們重新整理環境變數: #source /etc/profile
最後我們驗證一下是否安裝成功: # go version
5.我們也可以不下載golang的壓縮包來進行安裝
sudo apt-get install golang
go version
Mac:
官網下載go1.6.darwin-amd64.pkg安裝檔案進行安裝
或者安裝homebrew後輸入命令:
brew update
brew install mercurial
brew install go
進行安裝。
輸入# go version,就會出現go編譯器的版本號碼.
輸入# go env就可以看到正確的go環境.
第一個Go程式
不能免俗,老規矩來個Hello World
1 package main2 3 import (4 "fmt"5 )6 7 func main() {8 fmt.Println("Hello World")9 }
把上面的代碼儲存到“C:\mygo\src\hello.go”,然後開啟命令列,執行:go install hello,即可看到輸出結果:Hello World
項目目錄
bin : 存放編譯後的可執行檔
pkg:存放編譯後的包檔案
src : 存放項目源檔案
Go語言入門(一)特性、安裝、環境搭建、第一個程式等