兄弟連區塊鏈技術培訓分享Go語言安裝和部署

來源:互聯網
上載者:User

  互連網二十多年,已到十字路口。區塊鏈出現前的互連網被稱為古典互連網,而應用區塊鏈技術的互連網才進入了後互連網時代。作為一項新興的技術,區塊鏈無疑正處於風口浪尖之上,其發展前景於普通福士而言也終將是利好。但目前由於區塊鏈技術處於發展早期階段,存在技術成熟度等級、落地應用情境有限等問題,兄弟連教育建議使用者在選擇專業Go語言+區塊鏈培訓機構前應進行仔細考量與辨別。


安裝golang

GOROOT 理論上只要定義這一個環境變數就可以玩了,go編譯的時候會首先在安裝目錄下尋找包

GOBIN 如果不定義的話,預設是$GOROOT/bin 如果想不切換目錄執行go的命令的話.需要將$GOBIN 加入到PATH目錄中.這個你懂的

GOPATH 一般是你的開發目錄,可以有多個.多個目錄的時候Windows是分號,Linux系統是冒號,當有多個GOPATH時,預設會將go get的內容放在第一個目錄下

$GOPATH 目錄約定有三個子目錄:


src 存放原始碼(比如:.go .c .h .s等)

pkg 編譯後產生的檔案(比如:.a)

bin 編譯後產生的可執行檔(為了方便,可以把此目錄加入到 $PATH 變數中)

編譯

構建一個Go程式需要兩步:編譯和連結。

編譯和鏈 接過程都由工具go處理,它不僅可以構建本地程式和包,還能夠擷取、構建以及安裝第三方程式和包。


go build 只編譯主程式(有main()函數的go檔案).且如果不指定-o參數,會目前的目錄下產生一個可執行檔。

go build -o myfirstgo例如   hellogo.go 編譯成指定目標檔案名myfirstgo  

go build 後面不帶檔案名稱,我們將得到一個與目錄名同名的可執行檔  例如app/main.go    則得到app


如果有多重專案,即由多個main..則可指定項目,可在go build之後加上檔案名稱,例如go build a.go;


go get 擷取遠程包的工具,目前go get支援多數開源社區(例如:github、googlecode、bitbucket、Launchpad)


例如 :go get github.com/astaxie/beedb go get -u 參數可以自動更新包,而且當go get的時候會自動擷取該包依賴的其他第三方包

go get本質上可以理解為首先第一步是通過源碼工具clone代碼到src下面,然後執行go install


要想go能夠編譯本地程式和包,有三個要求:


Go的bin目錄($GOROOT/bin或%GOROOT%\bin)必須在PATH環境變 量下

必須存在一個目錄,該目錄下包含一個src目錄,本地程式和包的源碼就駐留在src目錄下

包含src的那個目錄必須在GOPATH環境變數中設定

Go編譯器的package搜尋順序是這樣的,以搜尋hello這個package為例:


首先,Go編譯器會在GO安裝目錄(GOROOT,這裡是/usr/local/go)下尋找是否有src/pkg/hello相關包源碼;如果沒有則繼續;

若GOPATH=PATH1:PAHT2,則Go編譯器會依次尋找是否存在PATH1/src/hello、PATH2/src/hello;配置在GOPATH中的PATH1和PATH2被稱作workplace;


go install命令除了做了go build所做的事情之外,還將可執行檔放在標準位置($GOPATH/bin或%GOPATH%\bin)。

go install還可編譯其他非主程式的包放在pkg目錄下

這意味著將一個單一路徑($GOPATH /bin或%GOPATH>%\bin)加入到PATH環境變數中,我們安裝的所有Go程式就可以方便地被加入到PATH中。 install命令執行後,我們發現main目錄下沒有任何變化,原先build時產生的main可執行檔也不見了蹤影。

別急,前面說過Go install也有一套自己的約定:


go install編譯出的可執行檔檔案名稱為其所在目錄名.所以可以把main目錄改成你想要的目錄名

go install將可執行檔安裝到與src同層級的bin目錄下,bin目錄由go install自動建立.如果主檔案不在src/DIR 子目錄下.則不會產生到bin目錄下

go install將可執行檔依賴的各種package編譯後,放在與src同層級的pkg目錄下

.

|-- bin

|   `-- main.exe

|-- pkg

|   `-- windows_amd64

|       `-- hello.a

`-- src

    |-- hello

    |   `-- hello.go

    `-- main

        `-- main.go

1.go的入口程式,為package main下的main函數..和其所在的包名和檔案名稱無關..即包名,和檔案名稱可以自訂.


2.雖然包名可以自訂,但是盡量保持為main.因為golang不允許同一個目錄下有兩個不同包名的檔案出現,如果app/main.go,app/test.go,test的package為app,則會發生下面的衝突


can't load package: package app: found packages main (main.go) and app (test.go) in /Volumes/Opt/workspace-go/src/app

高能預警,兄弟連教育區塊鏈直播課程8月持續火爆來襲!

原價1188元的12節區塊鏈進階課程,現僅需1元!

還可免費領取《Go語言基礎實戰項目開發》與《Go語言進階實戰項目開發》教材兩本!!

限時限量!!先到先得!!

http://www.ydma.cn/open/course/24 

關注兄弟連區塊鏈技術公眾號領取更多技術乾貨哦!!! 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.