本文內容
- 概述
- Go SDK
- LiteIDE
- 參考資料
遷移到:http://www.bdata-cap.com/newsinfo/1713828.html
2009年Google推出了它的第二個開源語言 Go。對 Go 的評價褒貶不一,中國比國外的熱情高。Go 天生就是為並發和網絡而生的,除了這點外,在靜態編譯、GC、跨平台、易學、豐富的標准庫等,其實並不如 C/C++、Java、C#、Python。由此可想而知,為什么會出現 Go?以及為什么 Go 存在如此多的問題和爭論?——也許Go 更像是一個“天才的自閉症患者”,如果看清了這點,對網絡和知乎上一些 Go 的褒貶也就能泰然啦,這就好像下班到家,是先吃飯,還是先洗澡,重要嗎?~
下載開發工具
下載相關文檔手冊
概述
Go 是Google開發的一種編譯型,並發型,並具有垃圾回收功能的編程語言。
羅伯特.格瑞史莫(Robert Griesemer),羅勃.派克(Rob Pike)及肯.湯普遜於2007年9月開始設計Go語言,稍后 Ian Lance Taylor, Russ Cox 加入項目中。Go 語言於2009年11月正式宣布推出,成為開放源代碼項目,並在 Linux 及 Mac OS X 平台上進行了實現,后追加 Windows系統下的實現。
Go 的前身來自於Inferno(基於Plan 9 的改造)。Inferno 包含了一個叫做 Limbo 的語言。這里引用了一段來自於 Limbo 論文的描述:
Limbo 是用於開發運行在小型計算機上的分布式應用的編程語言。它支持模塊化編程,編譯期和運行時的強類型檢查,進程內基於具有類型的 channel 通訊,原子性垃圾回收和簡單的抽象數據類型。它被設計用於即便沒有硬件內存保護的小型設備上,也能安全的運行。
Go 從 Limbo 繼承的另一個特性是 channel。從 Limbo 文檔來的另一段描述:
channel 是用於向系統中其他代理發送和接收特定類型對象的通訊機制。channel 可以用於本地進程間通訊;用於連接到命名的目的地的庫方法。兩種情況都是直接發送和接收操作。
channel 在 Go 中比在 Limbo 中更加好用。如果我們對 Go 的歷史深入探索,會發現一個指向“Newsqueak”的線索,這是在類C 語言中使用channel 進行通訊的先驅。channel 並不是這些語言獨有的,另一個非類C 語言:Erlang,也在使用它。
圖 1 Go 語言編年史
使用 channel 與其他進程進行通訊叫做“通訊序列化過程(Communicating Sequential Processes - CSP)”,由 C. A. R. Hoare 設計構想,而他正是那個發明快速排序算法的人。
Go 是第一個實現了簡單的(或更加簡單的)並行開發,且跨平台的類C 語言。Go 語言的語法接近 C 語言,但是對於變量的聲明是不同的,其他語法不同之處是 For 循環和 if 判斷式沒有括號圍繞。Go 語言支持垃圾回收功能。Go 語言的並行模型是以東尼.霍爾的 CSP 為基礎,采取類似模型的其他語言包括 occam 和 Limbo,但它也具有 Pi 運算的特征,比如通道傳輸。
與 C++相比,Go語言並不包括如異常處理、繼承、泛型、斷言、虛函數等功能,但增加了 slice 型、並發、管道、垃圾回收、接口(interface)等特性的語言級支持。當然,Google 對於泛型的態度還是很開放的,但在該語言的常見問題列表中,對於斷言的存在,則持負面態度,同時也為自己不提供類型繼承來辯護。不同於 Java,Go語言內嵌了關聯數組(也稱為哈希表(hashes)或字典(dictionaries)),就像字符串類型一樣。
開發 Go 一般需要兩個程序:
本文以 Windows 7 64 位為環境,go1.4.2.windows-amd64 和 liteidex27.2.1.windows-qt5 為例。
Go SDK
圖 2 Go SDK
默認安裝路徑為 C:\go 下。當然你可以更改該路徑,只要在后續配置 IDE 時,使用正確的路徑即可。
安裝完成后,Go SDK 會自動為你添加系統環境變量。
現在,你可以用任何文本編輯器來編寫 Go 代碼,比如 HelloWorld.go,保存在 C 盤根路徑下:
package main
import (
"fmt"
)
func main() {
fmt.Println("Hello World!")
}
然后,你就可以通過運行 go run HelloWorld.go 來執行這個程序。
C:\>go run HelloWorld.go
hello, world
C:\>
LiteIDE
如果不想用命令行,可以用 IDE 環境——LiteIDE,只需對 IDE 進行相應的配置即可。
除了 LiteIDE 外,還有 Sublime Text、Vim、Emacs、Eclipse、IntelliJ IDEA。
下載 LiteIDE 壓縮文件,解壓為 “liteide”后,雙擊 “{你的路徑}\liteide\bin\liteide.exe”就可以看見如圖 3 所示:
圖 3 liteIDE 主界面
配置 liteIDE,點擊菜單欄“查看->選項”,會看見如圖 4 所示:
圖 4 配置 liteIDE
左邊選擇“LiteIDE”,右邊選擇你的環境,比如,我的是 Windows 7 64 位,就選 win64-user.env,雙擊后,會看見該配置文件的內容:、
# native compiler windows amd64
GOROOT=C:\Go
#GOBIN=
GOARCH=amd64
GOOS=windows
CGO_ENABLED=1
PATH=%GOROOT%\bin;%PATH%
LITEIDE_GDB=gdb64
LITEIDE_MAKE=mingw32-make
LITEIDE_TERM=%COMSPEC%
LITEIDE_TERMARGS=
LITEIDE_EXEC=%COMSPEC%
LITEIDE_EXECOPT=/C
除了 win64-user.env 外,還有 win64.env,前者是用戶配置文件,后者是整個機器的配置文件,因為 Windows 操作系統是多用戶的。
確保 GOROOT=C:\ 行,是你機器的實際 Go SDK 的路徑即可,比如,我的路徑其默認路徑 C:\Go。
工作路徑。你可以為 LiteIDE 配置工作路徑。選擇工具欄”Go圖標”,會看見圖 5 所示:
圖 5 配置工作路徑
你可以看見兩個路徑,第一個是我自定義的,第二個是系統默認的。
參考資料