GOPATH

itbsl發表於2018-10-24

GOPATH

工作目錄就是我們用來存放開發的原始碼的地方,對應的就是Go裡的GOPATH這個環境變數。這個環境變數指定之後,我們編譯原始碼等生成的檔案都會放到這個目錄下,GOPATH環境變數的配置參考golang環境搭建,配置到/etc/profile或者Windows下的系統變數裡。

前面我們在安裝Go的時候看到需要設定GOPATH變數,Go從1.1版本到1.7必須設定這個變數,而且不能和Go的安裝目錄一樣,這個目錄用來存放Go原始碼,也就是Go的工作空間(workspace,GOPATH環境變數指向的目錄),Go的可執行檔案,以及相應的編譯之後的包檔案。所以這個目錄下面有三個子目錄:src、bin、pkg。從go 1.8開始,GOPATH環境變數現在有一個預設值,如果它沒有被設定。 它在Unix上預設為$HOME/go,在Windows上預設為%USERPROFILE%/go。

這裡對GO工作空間包含的三個目錄作一個說明

  • src :裡面的每個子目錄都是一個包。包內是Go的原始碼檔案
  • pkg :編譯後生成的,包的目標檔案
  • bin :編譯後生成的可執行檔案

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

程式碼目錄結構規劃

GOPATH下的src目錄就是接下來開發程式的主要目錄,所有的原始碼都是放在這個目錄下面,那麼一般我們的做法就是一個目錄一個專案。

project1 // (project1新增到GOPATH目錄了)
  -- bin
  -- pkg
  -- src  
     -- models       // package
     -- controllers  // package
     -- main.go      // package main[注意,本文所有main.go均指包main的入口函式main所在檔案]
project2 // (project2新增到GOPATH目錄了)
   -- bin
   -- pkg
   -- src
      -- models       // package
      -- controllers  // package
      -- main.go      // package main

使用go build可以在src資料夾下編譯生成名為“src”的可執行檔案。這是golang預設約定。一般我個人不怎麼用這個命令。因為它會生成可執行檔案在src目錄下面。

我一般用:go get 和 go install。