go tool先天就是設計來與開源倉庫協作的,不管你願不願意發布你的**,構建開發環境的方式是一樣的。
go**必須儲存在乙個工作空間裡, 乙個工作空間要有三個根目錄
乙個工作空間的示例:
如:# $home/github/golang作為自己的開發目錄
$ export gopath="$home/golang:$home/github/golang"
# 將每個gopath下面的bin目錄新增到path變數
$ export path=$path:$goroot/bin:$/bin
無論你是否要發布你的程式, 你都應該以要發布的方式來構建你的程式,最好的包名是 github.com/user
下面,我將介紹如何將從頭構建乙個簡單的go程式. 首先, 我們以/data/github/golang
為工作空間
$ mkdir -p /data/github/golang$ cd /data/github/golang
$ export
gopath=$(
pwd)
為了建立乙個簡單的程式. 首先要選擇包路徑, 如github.com/crazygit/hello
, 並建立對於的目錄結構
在目錄$gopath/src/github.com/crazygit/hello
裡建立hello.go
packagemain
import
"fmt"
func
main
()
使用go工具編譯並安裝程式
$ cd或者$gopath
$ go install github.com/crazygit/hello
執行了之後,可以看到$gopath
中多了乙個bin
目錄,裡面有乙個名為hello
的可執行檔案
$ $gopath/bin/hellohello, world.
讓我們再建立乙個庫,同樣,先建立包路徑github.com/crazygit/stringutil
在裡面再建立乙個名為reverse.go
packagestringutil
func
reverse(s
string
)string
return
string(r
)}
編譯
$ cd編譯過程不會有什麼檔案產生, 可以使用
go install
, 它會建立pkg目錄 並生成pkg/linux_amd64/github.com/crazygit/stringutil.a
檔案.修改
hello.go
,讓它使用我們剛剛建立的庫安裝,當安裝的的時候,它會自動根據安裝依賴,所以安裝
hello
時, 它會自動安裝stringutil
$ go install github.com/crazygit/hello執行$ $gopath/bin/hellohello, go!
go**檔案的第一句話必須是
packagename
name就是要引起的包名,所有在同乙個包下的包名也一樣
go裡面為了方便,會使用引入包路徑的最後一段作為包名,如
crazygit/rot14
的包名就是rot14
可執行的命令必須引入包
package main
go自帶了乙個使用
go test
的測試框架,為了寫乙個測試檔案。應該建立乙個檔名
_test.go
結尾的檔案,函式名為如test***
的, 並且有引數t *testing.t
讓我們為stringutil包建立測試
$gopath/src/github.com/crazygit/stringutil/reverse_test.go
packagestringutil
import
"testing"
func
testreverse(t
*testing.t
),,,
}for_,
c:=range
cases
}}
執行測試
到此,我們對go有了個大致的印象,雖然有些地方看不懂,不過沒有關係,我們後面會繼續學習。
Go語言 初識
go是乙個開源的程式語言。用途可以做web 開發,也可以做遊戲開發。高效能分布式系統領域,支援高併發。體驗寫乙個簡單的go程式 go語言的副檔名是 go 檔案。新建乙個test.go檔案package main import fmt func main 執行 go run test.go輸出hell...
初識go語言
恢復內容開始 初識go語言 入手一門新的語言,由於有python的基礎,可能會比較簡單點,畢竟各種程式語言之間是相通的 首先是當然是所以語言的第乙個程式,檔名的字尾是 go 這裡就不介紹go所需要的環境配置了 package main import fmt func main 一些簡單的東西,也不說...
初識Go語言
一 go語言的主要特性 開放源 的通用計算機程式語言。開放源 的軟體 以下簡稱開源軟體 更容易被修正和改進。雖為靜態型別 編譯型的語言,但go語言的語法卻趨於指令碼化,非常簡潔。卓越的跨平台支援,無需移植 這裡的跨平台主要是指計算架構和作業系統。全自動的垃圾 機制,無需開發者干預。go語言程式在執行...