日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

第一讲 工作区和GOPATH

發布時間:2023/12/4 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第一讲 工作区和GOPATH 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

此為 《極客時間&Go語言核心36講》 個人筆記,具體課程詳見極客時間官網。

Table of Contents generated with DocToc

  • 第一講 工作區和GOPATH
    • 1. 環境變量配置
    • 2. 配置GOPATH的意義
      • 2.1 Go語言源碼的組織方式
      • 2.2 源碼安裝后的結果(歸檔文件、可執行文件)
      • 2.3 理解構建和安裝Go程序的過程
    • 3. 補充
      • 3.1 go build命令一些可選項的用途和用法
      • 3.2 go get
      • 3.3 其他

第一講 工作區和GOPATH

1. 環境變量配置

在這個過程需要配置3個環境變量:GOROOT、GOPATH、GOBIN。

  • GOROOT:Go語言安裝根目錄的路徑,也就是Go語言的安裝路徑;
  • GOPATH:若干工作區目錄的路徑,是我們自己定義的工作空間;
  • GOBIN:GO程序生成的可執行文件的路徑;

2. 配置GOPATH的意義

可以把GOPATH簡單理解成Go語言的工作目錄,它的值是一個路徑,在 GOPATH指定的工作目錄下,代碼總是會保存在 $GOPATH/src 目錄下。在工程經過go build、go install 或 go get 等指令后,會將產生的二進制可執行文件放在 $GOPATH/bin 目錄下,生成的中間緩存文件會被保存在 $GOPATH/pkg 下。

環境變量 GOPATH 指向的是一個或多個工作區,每個工作區中都會有以代碼包為基本組織形式的源碼文件。

由于Go語言項目在其生命周期內的所有操作(編碼、依賴管理、構建、測試、安裝等)基本上都圍繞GOPATH和工作區進行,所以可以拓展出其他問題:

2.1 Go語言源碼的組織方式

和大多數編程語言一樣,Go語言的源碼也是以代碼包為基本單位的。每個代碼包都會有導入路徑,在使用程序實體之前都必須導入其所在的代碼包,例如:

import "github.com/labstack/echo"

在工作區中,一個代碼包的導入路徑實際上就是從src子目錄,到該包的實際存儲位置的相對路徑。一般情況下,Go語言的源碼文件都需要被存放在環境變量GOPATH包含的某個工作區(目錄)中的src目錄下的某個代碼包(目錄)中。

2.2 源碼安裝后的結果(歸檔文件、可執行文件)

源碼文件通常會被放在某個工作區的src子目錄下,那么在安裝后如果產生了歸檔文件(xxx.a,程序編譯后生成的靜態庫文件),就會放進該工作區的pkg子目錄;如果產生了可執行文件,就會放進該工作區的bin子目錄下。

歸檔文件的相對目錄與pkg目錄之間還有一集目錄,叫做平臺相關目錄,一般是由構建(build)的目標操作系統、下劃線和木匾計算架構的代號組成。

2.3 理解構建和安裝Go程序的過程

構建使用命令go build,安裝使用命令go install,構建和安裝代碼包的時候都會執行編譯、打包等操作。

庫源碼文件命令源碼文件
構建操作的結果文件只存在于臨時文件,這里構建的主要意義在于檢查和驗證操作的結果文件會被搬運到源碼文件所在的目錄中
安裝先執行構建,然后還會進行鏈接操作,并把結果文件搬運到它所在工作區的pkg目錄下的某個子目錄中結果文件會被搬運到它所在工作區的bin目錄中,或者環境變量GOBIN指向的目錄中

3. 補充

3.1 go build命令一些可選項的用途和用法

中go build時,默認不會編譯目標代碼包所依賴的那些代碼包,除非它依賴的代碼包的歸檔文件不存在,或者(被依賴代碼包的)源碼文件有了變化,同時,還可以可以使用-a來強制編譯。另外,如果不但要編譯依賴的代碼包,還要安裝它們的歸檔文件,可以使用-i。

  • -x:查看go build命令具體都執行了哪些操作;
  • -n:查看操作而不執行;
  • -v:查看go build命令編譯的代碼包名稱;
3.2 go get

go get會自動從一些主流代碼庫下載目標代碼,并把它們安裝到環境變量GOPATH包含的第一個工作區的相應目錄中。如果存在環境變量GOBIN,那么僅包含命令源碼文件的代碼包會被安裝到GOBIN指向的那個目錄。

  • -u:下載并安裝代碼包,無論工作區是否已經存在它們;
  • -d:只下載代碼包,但不安裝;
  • -fix:下載代碼包后,先運行一個修正代碼的工具,然后再安裝;
  • -t:下載并測試所需的代碼包;
  • -insecure:允許通過非安全的網絡協議下載和安裝代碼包;(例如:http…)
3.3 其他
  • Go語言在多個工作區中查找依賴包的時候是以怎樣的順序進行的?

    根據GOPATH從上到下查找。

  • 如果多個工作區中存在導入路徑相同的代碼包會產生沖突嗎?

    不會,代碼包上根據GOPATH從上到下查找,找到即可停止,先找到哪個就用哪個。

總結

以上是生活随笔為你收集整理的第一讲 工作区和GOPATH的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。