1. 程式人生 > >Linux上go的安裝配置以及簡單使用

Linux上go的安裝配置以及簡單使用

安裝go工具

http://golang.org/dl/下載最新的linux版本,並把它提取到/usr/local目錄,在此目錄下進行解壓縮

$ tar -xvf xxx.tar.gz
然後將/usr/local/go/bin新增到PATH環境變數中,執行
$ export PATH=$PATH:/usr/local/go/bin

實際上go會預設假定它被安裝到/usr/local/go目錄下,但也可以將go安裝到其他位置,此時必須設定GOROOT環境變數來指出它所安裝的位置。

例如將go安裝到你的home目錄下,你應當將以下命令新增到$HOME/.profile檔案中

$ export GOROOT=$HOME/go
$ export PATH=$PATH:$GOROOT/bin

執行go version,看到go的安裝版本即安裝成功

你的第一個程式

GOPATH環境變數

GOPATH環境變數指定了你的工作空間位置

首先建立一個工作目錄,並設定相應的GOPATH,工作目錄可以放在任何地方,但不能和go的安裝目錄相同,在這我們使用$HOME/work

$ mkdir $HOME/work
$ export GOPATH=$HOME/work

注意:go的程式碼必須放在工作空間內,也就是我們這裡的work目錄下,其中包含了三個子目錄

bin目錄包含可執行命令

pkg目錄包含包物件

src目錄包含go的原始檔,它們被組織成包(每個目錄都對應一個包)

接下來將工作空間的bin子目錄新增到PATH中:

$ export PATH=$PATH:$GOPATH/bin
包路徑

標準庫中的包有給定的短路徑比如"fmt",對於你自己的包,也必須選擇一個基本路徑,來保證它不會與將來新增到標準庫或其他標準庫中的包相沖突。

使用packs作為基本路徑,在你的工作空間裡建立一個目錄,我們將原始碼放在其中:

$ mkdir $GOPATH/src/packs

你的第一個程式

要編譯執行簡單的程式,首先要選擇包路徑,在這裡我們使用packs/hello,並在你的工作空間內建立相應的包目錄

$ mkdir $GOPATH/src/packs/hello
接著在該目錄中建立名為hello.go的檔案,其內容如下
package main

import "fmt"

func main() {
    fmt.Printf("Hello, world.\n")
}

現在可以使用go工具構建並安裝此程式了
$ go install packs/hello

注意,你可以在系統的任何地方執行此命令。go工具會根據GOPATH指定的工作空間,在packs/hello包內查詢原始碼。

如果從包目錄中執行go install,也可以省略包路徑:

$ cd $GOPATH/src/packs/hello
$ go install

此命令會構建hello命令,產生一個可執行的二進位制檔案。並存放在工作空間的bin目錄下,在這裡就是$GOPATH/bin目錄下

因為已經將$GOPATH/bin新增到PATH中,只需要輸入該二進位制檔名執行即可

$ hello
Hello, world.

你的第一個庫

讓我們編寫一個庫,並讓hello程式使用它。

同樣,第一步韓式選擇包路徑(在這裡使用packs/stringutil)並建立包目錄:

$ mkdir $GOPATH/src/packs/stringutil
接著,在該目錄中建立名為reverse.go的檔案,內容如下:
// stringutil 包含有用於處理字串的工具函式。
package stringutil

// Reverse 將其實參字串以符文為單位左右反轉。
func Reverse(s string) string {
	r := []rune(s)
	for i, j := 0, len(r)-1; i < len(r)/2; i, j = i+1, j-1 {
		r[i], r[j] = r[j], r[i]
	}
	return string(r)
}


然後使用go build命令來測試該包的編譯:

$ go build packs/stringutil
即可,這不會產生輸出檔案,想要輸出的話,必須使用go install命令,它會將包的物件放到工作空間的pkg目錄中。

接下來修改原來的hello.go檔案

package main

import (
	"fmt"

	"github.com/user/stringutil"
)

func main() {
	fmt.Printf(stringutil.Reverse("!oG ,olleH"))
}

然後通過
$ go install packs/hello

來安裝hello程式,再執行此程式的新版本,應該能看到一條新的,反向的資訊:
$ hello
Hello, Go!