1. 程式人生 > >Go起步:1、開發環境的配置--Windows和Linux

Go起步:1、開發環境的配置--Windows和Linux

GO是google釋出的一款開源程式語言。正如去官網所說的那樣–Go是一個開源程式語言,可以很容易地構建簡單,可靠,高效的軟體(Go is an open source programming language that makes it easy to build simple, reliable, and efficient software.)。Go語言專門針對多處理器系統應用程式的程式設計進行了優化,使用Go編譯的程式可以媲美C或C++程式碼的速度,而且更加安全、支援並行程序。更多資訊可以檢視官網https://golang.org/得到。
想了解一門程式語言,肯定需要安裝嘗試,要得到Go可以到官網的下載地址

https://golang.org/dl/下載相應平臺的版本。因為Go是跨平臺和開源的,所以可以看到有Windows,Mac和Linux及原始碼包的四個版本。目前最新版是1.6.3。

Windows平臺

直接是msi的可安裝檔案,雙擊安裝後配置環境變數
預設安裝到C:\Go
設定go需要的變數

GOROOT=C:\Go
GOBIN=%GOROOT%\bin
GOPATH=E:\workspace\go\gopath

其中GOPATH的作用是告訴Go在那裡去找到安裝在你係統上的Go包。所以以後使用go get命令得到的包都會下載到那裡。可以設定多個路徑,用分號(;)分隔。需要注意的是go get會將程式碼下載到GOPATH裡面的第一個專案目錄裡面。
將GOBIN加入到PATH中
這裡寫圖片描述


這裡寫圖片描述
確保path中可以查到go的bin目錄。有時我將GOBIN直接放到path中時會解析不到,不知什麼原因,如果在遇到這個問題我會把go/bin的路徑直接加入到path中。
檢查go的環境配置

go version

這裡寫圖片描述
輸出版本資訊就是是安裝完成。
檢視go的設定可以使用go evn。

go evn

這裡寫圖片描述

Linux平臺

在Linux上安裝其實和windows差不多,甚至更容易些.畢竟Linux在軟體開發方面對比windows還是有些許優勢的.我的Linux發行版選擇的是Ubuntu.
同樣也是設定環境變數.如果希望對全體使用者生效,則設定在/etc/profile裡,如果只希望對個別使用者剩下則設定在相應使用者主目錄下的.profice

裡.
我是設定在/etc/profile裡.使用vim開啟/etc/profile檔案,在最後增加如下設定:

export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin
export GOPATH=$HOME/workspace/go

然後登出或者使用source /etc/profile使環境變數生效.
這裡寫圖片描述
這樣,Linux下的環境就配置完成了.
至於Mac的配置,因為一直沒有錢買個Mac所以也就不去配置使用了。不過想來應該和Linux相差不大吧。

Hello World

剩下的都是套路了.官網一進去可以看到一個例子.

package main

import "fmt"

func main() {
    fmt.Println("Hello, 世界")
}

新建一個檔案hello.go儲存以上程式碼.使用go build編譯,執行.
這裡寫圖片描述
如果go build不指定名稱,預設編譯的檔案是已當前目錄為名的.我的hello.go在目錄mungo下,所以編譯完後就是mungo的可執行檔案.執行之後可以看到螢幕輸出了”Hello 世界”的歡迎語.

程式碼解讀

Go程式都是一個package宣告開始的,表示該Go程式碼所屬的包,如上面的main。包是Go語言裡的基本的分發單位,也是工程管理中依賴關係的體現。而且如果要生成Go可執行程式,必須建立一個名字為main的包,並且在該包中包含一個叫main()的函式,該函式是Go可執行程式的執行起點。main()函式不能帶引數,也不能定義返回值。
在包宣告之後,是一系列的import語句,用於匯入該程式所依賴的包。像上面的程式中用到的Println()函式屬於fmt包,所以需要import fmt。 有一點需要注意,不得包含在原始碼檔案中沒有用到的包,否則Go編譯器會報編譯錯誤。 這個不知道為什麼設計成這樣,一開始很不習慣。
在下面func關鍵字就是定義函數了。上面定義的main()函式沒有引數和返回值。
花括號{}裡面即使方法體了。上面的程式就是在螢幕打印出“Hello, 世界”的問候語。需要特別注意的是:右花括號{不能另起一行。否則編譯會報錯。而且語句結束後可以不加分號的
通過這個簡單的程式就可以發現go不同於java或者C的很多語法特性。這些目前我談不上理解他們的好處,也說不出壞處,可能這就是 了Go 語言在語言層面解決軟體工程問題的設計哲學,這些以後慢慢理解吧。

學習參考

這裡介紹一下我在接觸學習Go的用到的一些資料。主要是下面的三個方面。當然網路還有很多其他的資源,不限於這些。

這樣,今天就把Go的使用環境打好了,以後的Go的世界就可以慢慢探索了。