1. 程式人生 > >Go學習筆記01

Go學習筆記01

源碼 沒事 安裝 下載 命名 cos 代碼包 bin 終端

前言

Go(Golang)是Google開發的一種強靜態類型、編譯型、並發型,並具有垃圾回收功能的編程語言,所以使用Go編寫的程序相比nodejs之類的弱類型語言,可以提前在編譯階段發現錯誤,而且由於沒有類似JVM運行時,所以編譯後的程序不是中間語言而是機器代碼。總之,它類似c/c++擁有接近它們的性能,但又沒有它們煩人的內存管理,重要的是在並發多線程方面處理的非常優雅,特別適合高並發和對性能有要求的場景下開發。好了,閑話少說,接下來看看如何安裝Go。

1. Go的安裝:Linux 和 Mac

Go的開發環境支持主流的操作系統,如:FreeBSD 10.3 or later(amd64, 386),Linux 2.6.23 or later with glibc(amd64, 386, arm, arm64,s390x, ppc64le),macOS 10.10 or later(amd64),Windows 7, Server 2008R2 or later(amd64,386)。如果你的開發環境就在這些系統中,那麽你就可以在官網下載安裝包了,假如不是也沒事,可以直接獲取源碼自己編譯安裝,不過本文不回介紹相關的內容。由於windows上的安裝很簡單,這裏就先略過了,那麽重點說說Linux和Mac下如何安裝。

Mac環境安裝

其實Mac環境下安裝也很簡單,有幾種方式:直接下載安裝包,使用Homebrew(包管理)安裝。我推薦使用Homebrew,用它就幾個簡單命令就可以安裝了。如果你沒有安裝Homebrew,請自行Google。在終端下敲入以下命令:

~ brew install go
installing...

Homebrew的安裝操作執行完成後,你就可以在終端上敲入以下命令驗證是否成功:

~ go version
go version go1.10.3 darwin/amd64

哈,是不是很簡單,之所以推薦使用Homebrew安裝,方便更新管理Go的開發版本。

Linux安裝

Linux下安裝就麻煩些,首先你需要確認系統的版本:

uname -a
Linux SSS-LA 4.9.0-8-amd64 #1 SMP Debian 4.9.110-3+deb9u4 (2018-08-21) x86_64 GNU/Linux

那麽,根據終端顯示的系統版本相關信息,在這找到對應的下載鏈接,點擊下載或使用wget命令下載,如下所示:

wget https://dl.google.com/go/go1.11.linux-amd64.tar.gz
--2018-09-01 06:39:53--  https://dl.google.com/go/go1.11.linux-amd64.tar.gz
Resolving dl.google.com (dl.google.com)... 2607:f8b0:4000:801::200e, 172.217.9.174
Connecting to dl.google.com (dl.google.com)|2607:f8b0:4000:801::200e|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 127163815 (121M) [application/octet-stream]
Saving to: ‘go1.11.linux-amd64.tar.gz’

go1.11.linux-amd64.tar.gz              100%[============================================================================>] 121.27M  98.5MB/s    in 1.2s

2018-09-01 06:39:55 (98.5 MB/s) - ‘go1.11.linux-amd64.tar.gz’ saved [127163815/127163815]

OK,接著找到下載好的目錄,使用tar命令進行解壓安裝

tar -C /usr/local -xzf go1.11.linux-amd64.tar.gz

一切順利的話,go就已經安裝好了,那麽來驗證下吧,請輸入以下命令:

go version
go version go1.11 linux/amd64

在你的終端上顯示如上的類似信息,那麽 Go 就已經正確安裝到你的機器上了。那是不是可以寫個 Hello world 了,take esay,還需要簡單的配置幾個路徑。

2. GOROOT,GOPATH,PATH設置

GOROOT、GOPATH、PATH這三個環境變量需要在profile中設置下,可以在.profile 或 /etc/profile 下添加這幾個環境變量

export GOROOT=/usr/local/go
export GOPATH=$HOME/golib
export GOBIN=$HOME/.gobin
export PATH=$PATH:$GOROOT/bin:$GOBIN

GOROOT 表示的是 Go的安裝目錄

GOPATHGo 代表了工作區,它是 Go 程序源碼的存放目錄,每一個工作區的目錄相同,必須包含三個子目錄:src、bin、pkg。
src是存放了源碼文件,源碼文件是以代碼包組織的。pkg是存放的歸檔文件(名稱以.a為後綴的文件),註意歸檔文件是存放在平臺相關的目錄下的,平臺相關指的是與系統和CPU架構有關。bin用於存放當前工作區中的 Go 程序的可執行文件,但是 GOBIN 設置了,執行 go install 命令後,可執行文件會存放在 GOBIN 對應的目錄下

GOBINgo install 命令命令安裝執行的目錄

PATH 是為了方便 Go 語言命令和 Go 程序的可執行文件進行設置

3.包的導入方式

代碼包的導入形式有以下四種:

1) import "strings",這是最常見的,其使用方式為 strings.HasPrefix("Gopher","Go")

2) import str "strings",這是給導入的代碼包重新命名,防止與已有的沖突,其實用方式跟上面類似 str.HasPrefix("Gopher","Go")

3) import . "strings",這種方式是將 strings 包可訪問的方法、類型等導入到當前的包中,所以就要求當前包內不能有與 strings 內的方法或類型有沖突,其使用方式跟上面完全不同 *HasPrefix("Gopher","Go")

4) import _ "strings",這種方式也是導入,但當前包內不會直接使用該包

4. 代碼包初始化

代碼包的初始化函數 init ,是在 package block variables 之後才會執行。當一個包有多個 init 函數時,執行順序是按照文件名的ascii碼的加載執行,被導入 packageinit 會先執行,當引入了多個 package 時,執行順序是按照文件名的ascii碼順序執行,先執行被導入包的全局變量聲明表達式,接著執行 init 函數,當執行完所有被導入包的初始化後,最後再執行當前包的初始化過程。

Go學習筆記01