centos下go環境搭建及hello world
阿新 • • 發佈:2019-02-05
Go語言是谷歌2009釋出的第二款開源程式語言。
Go語言專門針對多處理器系統應用程式的程式設計進行了優化,使用Go編譯的程式可以媲美C或C++程式碼的速度,而且更加安全、支援並行程序。
分散式系統,資料庫代理器等
網路程式設計,這一塊目前應用最廣,包括Web應用、API應用、下載應用、
記憶體資料庫,前一段時間google開發的groupcache,couchbase的部分組建
雲平臺,目前國外很多雲平臺在採用Go開發,CloudFoundy的部分組建,前VMare的技術總監自己出來搞的apcera雲平臺。
nsq:bitly開源的訊息佇列系統,效能非常高,目前他們每天處理數十億條的訊息
docker:基於lxc的一個虛擬打包工具,能夠實現PAAS平臺的組建。
packer:用來生成不同平臺的映象檔案,例如VM、vbox、AWS等,作者是vagrant的作者
skynet:分散式排程框架
Doozer:分散式同步工具,類似ZooKeeper
Heka:mazila開源的日誌處理系統
cbfs:couchbase開源的分散式檔案系統
tsuru:開源的PAAS平臺,和SAE實現的功能一模一樣
groupcache:memcahe作者寫的用於Google下載系統的快取系統
god:類似redis的快取系統,但是支援分散式和擴充套件性
gor:網路流量抓包和重放工具
以下是一些公司,只是一小部分:
http://Apcera.com
http://Stathat.com
Juju at Canonical/Ubuntu, presentation
http://Beachfront.iO at Beachfront Media
CloudFlare
Soundcloud
Mozilla
Disqus
http://Bit.ly
Heroku
google
youtube
環境搭建:
說明:
第一行程式碼 package main 定義了包名。你必須在原始檔中非註釋的第一行指明這個檔案屬於哪個包,如:package main。package main表示一個可獨立執行的程式,每個 Go 應用程式都包含一個名為 main 的包。
下一行 import "fmt" 告訴 Go 編譯器這個程式需要使用 fmt 包(的函式,或其他元素),fmt 包實現了格式化 IO(輸入/輸出)的函式。
下一行 func main() 是程式開始執行的函式。main 函式是每一個可執行程式所必須包含的,一般來說都是在啟動後第一個執行的函式(如果有 init() 函式則會先執行該函式)。
下一行 /*...*/ 是註釋,在程式執行時將被忽略。單行註釋是最常見的註釋形式,你可以在任何地方使用以 // 開頭的單行註釋。多行註釋也叫塊註釋,均已以 /* 開頭,並以 */ 結尾,且不可以巢狀使用,多行註釋一般用於包的文件描述或註釋成塊的程式碼片段。
下一行 fmt.Println(...) 可以將字串輸出到控制檯,並在最後自動增加換行字元 \n。
使用 fmt.Print("hello, world\n") 可以得到相同的結果。
Print 和 Println 這兩個函式也支援使用變數,如:fmt.Println(arr)。如果沒有特別指定,它們會以預設的列印格式將變數 arr 輸出到控制檯。
Go語言專門針對多處理器系統應用程式的程式設計進行了優化,使用Go編譯的程式可以媲美C或C++程式碼的速度,而且更加安全、支援並行程序。
Go適合用來做什麼
伺服器程式設計,以前你如果使用C或者C++做的那些事情,用Go來做很合適,例如處理日誌、資料打包、虛擬機器處理、檔案系統等。分散式系統,資料庫代理器等
網路程式設計,這一塊目前應用最廣,包括Web應用、API應用、下載應用、
記憶體資料庫,前一段時間google開發的groupcache,couchbase的部分組建
雲平臺,目前國外很多雲平臺在採用Go開發,CloudFoundy的部分組建,前VMare的技術總監自己出來搞的apcera雲平臺。
Go成功的專案
docker:基於lxc的一個虛擬打包工具,能夠實現PAAS平臺的組建。
packer:用來生成不同平臺的映象檔案,例如VM、vbox、AWS等,作者是vagrant的作者
skynet:分散式排程框架
Doozer:分散式同步工具,類似ZooKeeper
Heka:mazila開源的日誌處理系統
cbfs:couchbase開源的分散式檔案系統
tsuru:開源的PAAS平臺,和SAE實現的功能一模一樣
groupcache:memcahe作者寫的用於Google下載系統的快取系統
god:類似redis的快取系統,但是支援分散式和擴充套件性
gor:網路流量抓包和重放工具
以下是一些公司,只是一小部分:
http://Apcera.com
http://Stathat.com
Juju at Canonical/Ubuntu, presentation
http://Beachfront.iO at Beachfront Media
CloudFlare
Soundcloud
Mozilla
Disqus
http://Bit.ly
Heroku
youtube
環境搭建:
1、下載原始碼包:go1.6.linux-amd64.tar.gz。 連結:http://pan.baidu.com/s/1mgYuvpu 密碼:39ji
2、將下載的原始碼包解壓至 /usr/local目錄。
tar -C /usr/local -xzf go1.6.linux-amd64.tar.gz3、將 /usr/local/go/bin 目錄和工作區新增至PATH環境變數:
vi /etc/profile
export PATH=$PATH:/usr/local/go/bin
export GOPATH=/data/work
source /etc/profile
4、mkdir -p /data/work && cd /data/work
5、建立utf8編碼的hello.go檔案,程式碼如下:
package main import "fmt" func main() { /* 這是我的第一個簡單的程式 */ fmt.Println("Hello, World!") }
6、使用go編譯執行
說明:
第一行程式碼 package main 定義了包名。你必須在原始檔中非註釋的第一行指明這個檔案屬於哪個包,如:package main。package main表示一個可獨立執行的程式,每個 Go 應用程式都包含一個名為 main 的包。
下一行 import "fmt" 告訴 Go 編譯器這個程式需要使用 fmt 包(的函式,或其他元素),fmt 包實現了格式化 IO(輸入/輸出)的函式。
下一行 func main() 是程式開始執行的函式。main 函式是每一個可執行程式所必須包含的,一般來說都是在啟動後第一個執行的函式(如果有 init() 函式則會先執行該函式)。
下一行 /*...*/ 是註釋,在程式執行時將被忽略。單行註釋是最常見的註釋形式,你可以在任何地方使用以 // 開頭的單行註釋。多行註釋也叫塊註釋,均已以 /* 開頭,並以 */ 結尾,且不可以巢狀使用,多行註釋一般用於包的文件描述或註釋成塊的程式碼片段。
下一行 fmt.Println(...) 可以將字串輸出到控制檯,並在最後自動增加換行字元 \n。
使用 fmt.Print("hello, world\n") 可以得到相同的結果。
Print 和 Println 這兩個函式也支援使用變數,如:fmt.Println(arr)。如果沒有特別指定,它們會以預設的列印格式將變數 arr 輸出到控制檯。
當識別符號(包括常量、變數、型別、函式名、結構欄位等等)以一個大寫字母開頭,如:Group1,那麼使用這種形式的識別符號的物件就可以被外部包的程式碼所使用(客戶端程式需要先匯入這個包),這被稱為匯出(像面嚮物件語言中的 public);識別符號如果以小寫字母開頭,則對包外是不可見的,但是他們在整個包的內部是可見並且可用的(像面嚮物件語言中的 private )。
GOROOT:go的安裝目錄
PATH:方便使用go命令和go程式的可執行檔案
GOPATH:GOPATH是用來設定包載入路徑的重要變數。目錄中必須包含src、pkg、bin三個目錄。其中src目錄用於存放go原始碼,pkg目錄用於package物件,bin目錄用於存放可執行檔案
go get:下載第三方庫 如從github.com下載mysql驅動:go get github.com/go-sql-driver/mysql