1. 什麼是go語言
Go(又稱 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 開發的一種靜態 、強型別、編譯型語言 。Go 語言語法與 C相近,但功能上有:記憶體安全,GC(垃圾回收),結構形態及 CSP-style 併發計算。
-----------百度百科
Go 是一個開源的程式語言,它能讓構造簡單、可靠且高效的軟體變得容易。
Go 語言被設計成一門應用於搭載 Web 伺服器,儲存叢集或類似用途的巨型中央伺服器的系統程式語言。
它是編譯型語言。
它考慮了多核計算機的執行特點。(並行程式設計)
特點
- 簡單易學習
- 開發效率高
- 執行效率好(號稱21世紀的C語言)
兼具效率、效能、安全、健壯等特性
應用領域
- 服務端開發:日誌處理、檔案系統、監控服務
- 容器虛擬化:Docker、k8s、Docker Swarm
- 儲存:etcd、TiDB、GroupCache
- Web開發:http/net、Gin、Echo
- 區塊鏈:以太坊、fabric
- 雲平臺,目前國外很多雲平臺在採用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:網路流量抓包和重放工具
語言環境安裝
配置go環境變數;你機器上go的安裝的目錄
cmd輸入go version檢視版本
Go語言的Hello World
建立一個go語言的工作空間,並新增到環境變數
新建src、pkg、bin三個目錄
在src目錄下新建demo.go檔案
package main
import "fmt"
func main() {
fmt.Println("Hello World !")
}
在該資料夾開啟cmd 執行go demo.go
編譯
輸入dir檢視目錄檔案
會發現多了一個exe可執行檔案,檔案預設的名稱是當前資料夾的名稱
我們可以指定可執行檔名稱編譯
跨平臺編譯
預設我們go build
的可執行檔案都是當前作業系統可執行的檔案,如果需要編譯其他平臺的go可執行檔案,需要先指定平臺再編譯
SET CGO_ENABLED=0 // 禁用CGO,cgo不支援跨平臺
SET GOOS=linux // 目標平臺是linux
SET GOARCH=amd64 // 目標處理器架構是amd64
使用sublime開啟可以發現是一個二進位制檔案,拷貝到linux上即可執行
(在執行之前需要檢視檔案是否有執行許可權,不然需要授權)
Go語言專案目錄結構
開發工具(IDE)
免費的VS Code(安裝go外掛)
收費的Goland
vim
等等...
最後
讓我們開啟Go修仙之旅吧!