【Go入門教程1】Go 安裝,GOROOT,GOPATH,Go工作空間


Go安裝

Windows 安裝

訪問 Golang Code 下載頁,32 位請選擇名稱中包含 windows-386 的 msi 安裝包,64 位請選擇名稱中包含 windows-amd64 的。下載好后運行,默認安裝目錄為 C:\Go\,我選擇安裝到 D:\Go\Go。安裝完成后默認會在環境變量 Path 后添加 Go 安裝目錄下的 bin 目錄 D:\Go\Go\bin\,並添加環境變量 GOROOT,值為 Go 安裝根目錄 D:\Go\Go

右鍵桌面“計算機”-> 選擇“屬性”-> 高級系統設置 -> 環境變量 -> 系統變量

GOROOT D:\Go\Go
GOPATH D:\Go\GoProjects
Path D:\Program Files\Git\cmd;D:\Program Files\Git\bin;%GOROOT%\bin;%GOPATH%\bin;

在命令行中,輸入 go version 測試一下。

 

Liunx/Mac 安裝

默認安裝到 /usr/local/go (Windows系統:C:\Go)

配置下環境變量:

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

同樣,在控制台中輸入 go version 測試一下。

 


 

GOPATH與工作空間

前面我們在安裝Go的時候看到需要設置GOPATH變量,Go從1.1版本開始必須設置這個變量,而且不能和Go的安裝目錄一樣,這個目錄用來存放Go源碼,Go的可運行文件,以及相應的編譯之后的包文件。所以這個目錄下面有三個子目錄:srcbinpkg

GOPATH設置

go 命令依賴一個重要的環境變量:$GOPATH

Windows系統中環境變量的形式為 %GOPATH%,本書主要使用Unix形式,Windows用戶請自行替換。

(注:這個不是Go安裝目錄。下面以筆者的工作目錄為示例,如果你想不一樣請把GOPATH替換成你的工作目錄。)

在類似 Unix 環境大概這樣設置:

export GOPATH=/home/apple/mygo

為了方便,應該新建以上文件夾,並且上一行加入到 .bashrc 或者 .zshrc 或者自己的 sh 的配置文件中。

Windows 設置如下,新建一個環境變量名稱叫做GOPATH:

GOPATH=c:\mygo

GOPATH允許多個目錄,當有多個目錄時,請注意分隔符,多個目錄的時候Windows是分號,Linux系統是冒號,當有多個GOPATH時,默認會將 go get 的內容放在第一個目錄下。

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

  • src 存放源代碼(比如:.go .c .h .s等)
  • pkg 編譯后生成的文件(比如:.a)
  • bin 編譯后生成的可執行文件(為了方便,可以把此目錄加入到 $PATH 變量中,如果有多個gopath,
    那么使用 ${GOPATH//://bin:}/bin 添加所有的bin目錄)

附1:個人 Mac 電腦的 GOPATH 環境變量 參考

環境文件:~/.bash_profile 的內容如下:

alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'

export GOROOT=/usr/local/go
export GOPATH=/Users/jianbao/GoglandProjects/go-lib:/Users/jianbao/GoglandProjects/beego-study

export PHP=/usr/local/php/php-7.1

export PATH=$GOROOT/bin:${GOPATH//://bin:}/bin:$PHP/bin:$PHP/sbin:/usr/local/nginx/sbin:/usr/local/mysql:/usr/local/Cellar/subversion/1.9.4/bin:$PATH
#
# 注意:亮點是 ${GOPATH//://bin:}/bin, 可一次性添加 所有的 GOPATH 的 bin 目錄
#

附2:如何安裝 第三方 Go 離線包?

 

以后我所有的例子都是以 mygo 作為我的 gopath 目錄

代碼目錄結構規划

GOPATH下的src目錄就是接下來開發程序的主要目錄,所有的源碼都是放在這個目錄下面,那么一般我們的做法就是一個目錄一個項目,例如: $GOPATH/src/mymath 表示mymath這個應用包或者可執行應用,這個根據package是main還是其他來決定,main的話就是可執行應用,其他的話就是應用包,這個會在后續詳細介紹package。

所以當新建應用或者一個代碼包時都是在src目錄下新建一個文件夾,文件夾名稱一般是代碼包名稱,當然也允許多級目錄,例如在src下面新建了目錄$GOPATH/src/github.com/astaxie/beedb 那么這個包路徑就是"github.com/astaxie/beedb",包名稱是最后一個目錄beedb

下面我就以mymath為例來講述如何編寫應用包,執行如下代碼

cd $GOPATH/src
mkdir mymath

新建文件sqrt.go,內容如下

// $GOPATH/src/mymath/sqrt.go源碼如下:
package mymath

func Sqrt(x float64) float64 {
    z := 0.0
    for i := 0; i < 1000; i++ {
        z -= (z*z - x) / (2 * x)
    }
    return z
}

這樣我的應用包目錄和代碼已經新建完畢,注意:一般建議package的名稱和目錄名保持一致

編譯應用

上面我們已經建立了自己的應用包,如何進行編譯安裝呢?有兩種方式可以進行安裝

1、只要進入對應的應用包目錄,然后執行 go install,就可以安裝了

2、在任意的目錄執行如下代碼 go install mymath

安裝完之后,我們可以進入如下目錄

cd $GOPATH/pkg/${GOOS}_${GOARCH}
// 可以看到如下文件
mymath.a

這個.a文件是應用包,那么我們如何進行調用呢?

接下來我們新建一個應用程序來調用這個應用包

新建應用包 mathapp

cd $GOPATH/src
mkdir mathapp
cd mathapp
vim main.go

$GOPATH/src/mathapp/main.go源碼:

package main

import (
      "mymath"
      "fmt"
)

func main() {
      fmt.Printf("Hello, world.  Sqrt(2) = %v\n", mymath.Sqrt(2))
}

可以看到這個的package是main,import里面調用的包是mymath,這個就是相對於$GOPATH/src的路徑,如果是多級目錄,就在import里面引入多級目錄,如果你有多個GOPATH,也是一樣,Go會自動在多個$GOPATH/src中尋找。

如何編譯程序呢?進入該應用目錄,然后執行go build,那么在該目錄下面會生成一個mathapp的可執行文件

./mathapp

輸出如下內容

Hello, world.  Sqrt(2) = 1.414213562373095

如何安裝該應用,進入該目錄執行go install,那么在$GOPATH/bin/下增加了一個可執行文件mathapp, 還記得前面我們把$GOPATH/bin加到我們的PATH里面了,這樣可以在命令行輸入如下命令就可以執行

mathapp

也是輸出如下內容

Hello, world.  Sqrt(2) = 1.414213562373095

這里我們展示如何編譯和安裝一個可運行的應用,以及如何設計我們的目錄結構。

獲取遠程包

go語言有一個獲取遠程包的工具就是go get,目前go get支持多數開源社區(例如:github、googlecode、bitbucket、Launchpad)

go get github.com/astaxie/beedb

go get -u 參數可以自動更新包,而且當go get的時候會自動獲取該包依賴的其他第三方包

通過這個命令可以獲取相應的源碼,對應的開源平台采用不同的源碼控制工具,例如github采用git、googlecode采用hg,所以要想獲取這些源碼,必須先安裝相應的源碼控制工具

通過上面獲取的代碼在我們本地的源碼相應的代碼結構如下

$GOPATH
  src
   |--github.com
          |-astaxie
              |-beedb
   pkg
    |--相應平台
         |-github.com
               |--astaxie
                    |beedb.a

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

在代碼中如何使用遠程包,很簡單的就是和使用本地包一樣,只要在開頭import相應的路徑就可以

import "github.com/astaxie/beedb"

程序的整體結構

通過上面建立的我本地的mygo的目錄結構如下所示

bin/
    mathapp
pkg/
    平台名/ 如:darwin_amd64、linux_amd64
         mymath.a
         github.com/
              astaxie/
                   beedb.a
src/
    mathapp
          main.go
    mymath/
          sqrt.go
    github.com/
           astaxie/
                beedb/
                    beedb.go
                    util.go

從上面的結構我們可以很清晰的看到,bin目錄下面存的是編譯之后可執行的文件,pkg下面存放的是應用包,src下面保存的是應用源代碼

 

 

摘自:

https://github.com/astaxie/build-web-application-with-golang/blob/master/zh/01.2.md

 

 

延伸閱讀:

如何安裝 第三方 Go 離線包?

 

 


 

CentOS 上 Go 環境配置

1、下載 Go二進制源碼包(無須編譯,解壓即可使用)

https://storage.googleapis.com/golang/go1.7.5.linux-amd64.tar.gz

2、解壓到目錄 /usr/local/go/go-1.7.5

3、配置環境變量

vim /etc/profile

在(文件末)追加以下文本

export GOROOT=/usr/local/go/go-1.7.5
export GOPATH=/fiisoo/go
export PATH=$GOROOT/bin:${GOPATH//://bin:}/bin:$PATH


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM