1. 程式人生 > >Go語言核心36講筆記1——工作區和GOPATH

Go語言核心36講筆記1——工作區和GOPATH

Go語言核心36講筆記系列是我學習《Go併發程式設計實戰》作者郝林的專欄文章——Go語言核心36講所做的筆記。

1、配置三個環境變數:

GOROOT:Go的安裝目錄

GOPATH:工作空間目錄

GOBIN:

2、GOPATH

環境變數GOPATH的值可以是一個目錄的路徑,也可以包含多個目錄路徑,每個目錄待變了GO語言的一個工作去(workspace)。

擴充套件知識:

(1)Go語言原始碼的組織方式

Go語言的原始碼以程式碼包為基本組織單位,

程式碼包的名稱一般會與原始碼檔案所在的檔案的目錄同名,如果不同名,在構建和安裝的過程中會以程式碼包的名稱為準。

在工作區中,一個程式碼包的匯入路徑實際上是從src子目錄,到該包的實際儲存位置的相對路徑。

(2)原始碼安裝後的結果

原始碼檔案安裝後產生的歸檔檔案,會放進該工作區的pkg子目錄。如果產生了可執行檔案,,就會放進bin子目錄。

歸檔檔案的相對目錄與pkg目錄之間還有以及目錄,叫平臺相關目錄。平臺相關目錄的名稱是有build(也稱“構建”)的目標作業系統、下劃線和目標計算架構的代號組成。例如:構建某個程式碼包時的目標作業系統是Linux,目標計算架構是64位,那麼對應的平臺相關目錄是linux_amd64。則程式碼包的歸檔檔案就會放置到當前工作區的子目錄:pkg/linux_amd64/github.com/labstack 中。

(3)構建和安裝Go程式的過程

go build :構建命令

go install :安裝命令

構建和安裝都會執行編譯、打包等操作。

構建:若構建的是庫原始碼檔案,那麼操作可過值存在於臨時目錄中,這裡構建的意義在於檢查和驗證。若構建的是命令原始碼檔案,那麼結果檔案會搬運到那個原始碼檔案所在的目錄中。

安裝:安裝操作會先執行構建,若安裝的是庫原始碼檔案,結果檔案會搬運到pkg目錄下的某個子目錄。若安裝是命令原始碼檔案,則結果檔案搬運到bin目錄中,或者環境變數GOBIN指向的目錄。

(4)go build 命令的一些可選項的用途和用法

go build命令,預設不會編譯目的碼包所依賴的程式碼包。(當然如果依賴的程式碼包的歸檔檔案不存在,或者原始碼檔案有變化,還是會被編譯)

執行命令時加入標記:

  • -a :會強制編譯依賴的程式碼包。
  • -i :不但編譯依賴的程式碼包,還要安裝他們的歸檔檔案
  • -x:可以看到go build 命令具體執行了那些操作
  • -n:值檢視具體操作,而不執行他們
  • -v:看到go build命令編譯的程式碼包的名稱,與-a標記搭配一起使用很有用

go get 會自動從一些主流公用程式碼倉庫下載目的碼包。並把他們安裝到環境變數GOPATH包含的第一工作區相對應的目錄中。如果存在環境變數GOBIN,那麼近包含命令原始碼檔案的程式碼包會被安裝到GOBIN指向的目錄。

常用幾個標記:

  • -u:下載並安裝程式碼包,不論工作區中是否已存在他們
  • -d:只下載程式碼包,不安裝
  • -fix:在下載程式碼包後,先執行一個用於根據當前Go語言版本修正程式碼的工具,在安裝程式碼包。
  • -t:同時下載測試所需的程式碼包
  • -insecure:允許通過非安全的網路協議下載和安裝程式碼包。Http協議就是這樣的協議。

概念解釋:

歸檔檔案:歸檔檔案在linux下就是.a檔案,也就是archive檔案,是程式編譯成功後生成的靜態庫檔案。

思考題:

(1)Go語言在多個工作區中查詢依賴包時是以怎樣的順序進行的?

答:GOPATH——>GOPATH從上到下的順序。

(2)如果多個工作區中存在匯入路徑相同的程式碼包會產生衝突嗎?

答:不會,因為查詢程式碼包時是按題(1)中的順序,在哪先找到就用哪個。

相關推薦

Go語言核心36筆記1——工作GOPATH

Go語言核心36講筆記系列是我學習《Go併發程式設計實戰》作者郝林的專欄文章——Go語言核心36講所做的筆記。 1、配置三個環境變數: GOROOT:Go的安裝目錄 GOPATH:工作空間目錄 GOBIN: 2、GOPATH 環境變數GOPATH的值可以是一個

郝林《GO語言核心36筆記1:開篇詞|跟著學,你也能成為Go語言高手

此僅為學習筆記,版權歸極客時間所有。 前言 這是郝林老師在極客時間開設的一個專門學習Go語言的專欄,目前不知道這樣的一個筆記是否會涉及到版權問題,如有侵權,請即可聯絡我刪除。 簡介 Go語言是一門通用型計算機語言。 特點是入門快,程式庫多,執行快,適合快速構建網

go語言核心36要點概括(1-5)

01 | 工作區和GOPATH gopath指的是工作空間(包括原始碼,可以有多個) 構建使用命令go build,安裝使用命令go install。構建和安裝程式碼包的時候都會執行編譯、打包等操作,並且這些操作生成的任何檔案都會先被儲存到某個臨時的目錄中。

Go語言核心36筆記13: 使用函式的正確姿勢

回顧 前幾節講述了集合類的資料型別,包括標準庫的container包中的幾個型別,其中集合類的資料型別是最常用的。 前言 從今天開始講解Go語言進行模組化程式設計思想。 在Go語言中,函式是一等的公民,函式型別也是一等的資料型別。 函式不但可以用於封裝程式碼、分割功

Go語言核心36筆記7:程式實體的那些事兒(下)

回顧 在上一節中,我們著重講述了程式碼塊與程式實體的作用域和訪問許可權控制之間的關係,並圍繞著可重名變數和變數重宣告進行了討論。 前言 如果可重名變數的型別不同,那麼它們之間就可能會存在“遮蔽”的現象,必要時,我們在使用它們之前需要先行檢查型別。 問題:怎樣判斷一個變

Go語言核心36筆記8:陣列與切片

回顧 前面幾節都是關於Go語言的基礎知識,包括開發環境配置、常用原始碼檔案語法,以及程式實體、變數及其相關概念和技巧(如型別推斷、變數重宣告、可重名變數、型別斷言、型別轉換、別名型別和潛在型別等),這些都是學習Go語言的基礎,務必要清楚每一個細節,也可以自己寫程式碼實踐一下

go語言核心36》欄目心得

本人在學習Python的時候就聽說過Go語言,上個月憑藉著go語言的官網將go語言學習了,知識點零零散散,以至於做一個併發版的網路爬蟲,在資料的儲存和展示時花費了大量的時間,但幾天有幸看到go語言大牛郝林在極客時間出了go專欄,立即訂購了,閱讀了他的第一篇文章,

[Go語言學習筆記] 01 工作GOPATH

Go語言3個環境變數: GOROOT:GO語言按照根路徑,也就是GO語言的安裝路徑。 GOPATH:若干工作區目錄的路徑。是我自己定義的工作空間。 GOBIN:GO程式生成的可執行檔案(executable file)的路徑。   工作區和GOPATH:  

Go筆記一 | 工作GOPATH

核心知識 GOPATH的意義在與程式碼結構分層 Go語言原始碼的組織方式 以程式碼包為基本組織單位 程式碼包與目錄一一對應 目錄有子目錄,程式碼包也有子包 程式碼包中可以任意個.go 副檔名的原始碼檔案,需要被宣告為屬於同一個程式碼包

資料結構(C語言版)讀書筆記1(基本概念術語)

資料: 所有輸入到計算機中,並被計算機程式處理的符號的總稱。 資料元素: 資料的基本單位,在計算機程式中經常被當做一個整體進行考慮和處理 資料物件: 性質相同的資料元素的集合,是資料的一個子集。 資料結構: 相互之間存在一種或多種特定關係的資料元素的集合。這種資料元素之間

go語言系列一之工作GOPATH

從今天開始我們一起來學習GO語言,一起努力,一起成長 Go 語言被設計成一門應用於搭載 Web 伺服器,儲存叢集或類似用途的巨型中央伺服器的系統程式語言。 對於高效能分散式系統領域而言,Go 語言無疑比大多數其它語言有著更高的開發效率。 它提供了海量並行的支援,這對於遊

GO基礎 】 工作GOPATH

在過去的幾年裡,我們一起見證了Go語言的崛起,我最早用GO的時候Go的最新版本還是1.5.x 版本,那個時候也是第一次聽說Go這門語言。GO1.5版本開始,GO語言本身也開始了使用Go語言來實現Go語言本身,但那個時候的GC效能還不是很強。對於很多靜態型別語言轉

Go語言核心之美 1.3-賦值及型別宣告篇

賦值(Assignment)變數的值可以通過賦值操作符 = 來更新, v = 10。x = 1 // 具名變數x *p = true // 指標變數 person.name = "bob"

go 語言 基礎 類型(1

必須 const 表達式 基本 基本類 image 關鍵字 字符串 函數 變量 使用關鍵字 var定義變量,自動初始化為0值。如果提供初始化值,可省略變量類型,由編譯器自動推斷。 在函數內部可以使用 := 方式定義變量 func main() { x := 123

關於go語言的環境配置 SDK+path+工作目錄

電腦 程序 關於 找到 表示 選擇 壓縮包 span 操作 第一步: 安裝Golang的SDK http://golang.org,下載最新的安裝包,之後雙擊安裝即可。 安裝完成之後,打開終端,輸入go、或者go version(查看安裝版本)出現如下信息即表示安裝成功:

C語言學習筆記-1.(資料表示輸出)

C裡面的資料表示和輸出很重要.所以在此記下一些平時會用的東西. 1.系統自帶輸出八進位制和十六進位制(整數): 輸出八進位制:%o             輸出帶字首的八進位制:%#o 輸出十六進位制:%x 

資料分析學習筆記(1):工作環境以及建模理論基礎

一、環境部署   1.python包管理:     (1)安裝:pip install xxx,conda install xxx     (2)解除安裝:pip uninstall xxx,  conda uninstall xxx     (3)升級:pip install -upgrade xx

公信寶gxs核心程式碼閱讀筆記1-剛剛開始(霜之小刀)

公信寶gxs核心程式碼閱讀筆記1-剛剛開始(霜之小刀) 歡迎轉載和引用,若有問題請聯絡 若有疑問,請聯絡 Email : [email protected] QQ:2279557541 1、測試環境簡介 這裡我使用的是mbp,蘋果的開發環境

C語言深度解剖讀書筆記1

關鍵字 意義 關鍵字 意義 auto 宣告自動變數,預設時編譯器一般預設為auto register 宣告暫存器變數 int

管理方法論-學習技術管理實戰36筆記-【01-多年前的那些工程師都去哪了】

工程師的職業發展狀況,大體分佈在四個大類的八個方向。 這四個大類分別是技術類、管理類、創業類和顧問類。 工程師職業發展四個大類 技術類 技術類主要包含兩個大方向。 一個方向側重於“廣”,著眼技術的整體性、架構性和業務解決方案,我們姑且稱為“架構師”