亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

go語言中GOPATH GOROOT的作用和設(shè)置方式

 更新時(shí)間:2021年05月04日 12:44:14   作者:醉丶春風(fēng)  
這篇文章主要介紹了go語言中GOPATH GOROOT的作用和設(shè)置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

GOPATH 和 GOROOT

不同于其他語言,go中沒有項(xiàng)目的說法,只有包, 其中有兩個(gè)重要的路徑,GOROOT 和 GOPATH GOROOT是安裝目錄,GOPATH是我們的工作空間, 用來存放包的目錄

GOPATH可以設(shè)置多個(gè),其中,第一個(gè)將會(huì)是默認(rèn)的包目錄,使用 go get 下載的包都會(huì)在第一個(gè)path中的src目錄下,使用 go install時(shí),在哪個(gè)GOPATH中找到了這個(gè)包,就會(huì)在哪個(gè)GOPATH下的bin目錄生成可執(zhí)行文件

修改 GOPATH 和 GOROOT

安裝的時(shí)候如果沒有更改設(shè)置,默認(rèn)的GOROOT是在 C:\Go中,而 GOPATH會(huì)是在 C:\users\youName\go,

如果我們更改了go的安裝位置,那么可以需要設(shè)置一下GOROOT 環(huán)境變量了

打開環(huán)境變量設(shè)置,查看下面的系統(tǒng)變量,如果有 GOROOT這個(gè)選項(xiàng)的話,查看是否需要更改,沒有的話,新建一個(gè)就可以了,如圖:

同理,如果我們想在加一個(gè)工作空間的話,直接更改 GOPATH就可以了, go安裝的時(shí)候會(huì)在上面的用戶變量中添加GOPATH, 如果沒有的話像上一步一樣新建就可以了,多個(gè)目錄使用 ; 分號(hào)隔開

在這里插入圖片描述

不管是可執(zhí)行包,還是非可執(zhí)行包,通通都應(yīng)該在某個(gè) $GOPATH/src下。如果你這樣做了,那么就不會(huì)出現(xiàn)本地包這種寫法了

import "./path/package"

比如你可以把你的可執(zhí)行(項(xiàng)目)包,安放在某個(gè) $GOPATH/src下,例如 $GOPATH/src/app/youpackagedir

這樣本地包的import就變成

import "app/yourpackagedir/subpackage"

這樣有什么用呢?

1、可以使用 go install 你的子包,有利于go build的時(shí)間,如果子包較大,那就更明顯了

2、go code的自動(dòng)完成可以用了

修改完以后需要重啟 命令行工具, cmd/powershell/gitbash/Other,不重啟不會(huì)生效的

補(bǔ)充:Go項(xiàng)目的環(huán)境變量GOROOT和GOPATH的設(shè)置-那些踩過的坑

那些遇到過的問題

不知道集美們?cè)诔醮芜\(yùn)行g(shù)o項(xiàng)目的時(shí)候會(huì)不會(huì)遇到一些奇奇怪怪的問題,反正我是遇到了(我自己太菜了)。解決這些問題經(jīng)常要花半天、一天的時(shí)間,甚至是好幾個(gè)月(其實(shí)是被我拋到腦后了,但是遲早要解決)。我就開始陸陸續(xù)續(xù)把問題及其解決方法整理出來,形成了該篇文章。

import "github.com/xx/xx"出問題?

can't resolve the diectory

需要go get github.com\xx\xx,將包從github上下載下來,自動(dòng)放在gopath設(shè)置的路徑里面。

import"golang.org/xx/xx"出問題?

使用go get golang,org/xx/xx方法不能下下來。golang組織在github上建了一個(gè)鏡像庫。下載方法如下:

首先在gopath下創(chuàng)建好src/golang.org/x/目錄。后面就是按照同樣的方式進(jìn)行下載了。比如golang.org/x/text,拉取該模塊代碼:

git clone https://github.com/golang/net.git

其他的子包下載:

$ git clone https://github.com/golang/tour.git
$ git clone https://github.com/golang/net.git
$ git clone https://github.com/golang/blog.git
$ git clone https://github.com/golang/sync.git
$ git clone https://github.com/golang/tools.git
$ git clone https://github.com/golang/lint.git

設(shè)置GOROOT和GOPATH

先設(shè)置系統(tǒng)環(huán)境變量

GOROOT應(yīng)為go sdk的安裝目錄。GOPATH可以設(shè)定為自己想要的位置,以后go項(xiàng)目需要的依賴庫都會(huì)存放在這個(gè)路徑下面

GOROOT應(yīng)為go sdk的安裝目錄。GOPATH可以設(shè)定為自己想要的位置,以后go項(xiàng)目需要的依賴庫都會(huì)存放在這個(gè)路徑下面。

設(shè)置GOLAND中的GOROOT和GOPATH

GOROOT為go sdk的安裝目錄

GOROOT為go sdk的安裝目錄

GOPATH不用改變,自動(dòng)為系統(tǒng)變量。

GOPATH不用改變,自動(dòng)為系統(tǒng)變量

Go Modules(vgo)enable選項(xiàng)注意取消勾選或者勾選

在這里插入圖片描述

用命令行編譯,運(yùn)行g(shù)o項(xiàng)目,包含好幾個(gè)go文件

go項(xiàng)目文件列表如下

go項(xiàng)目文件

進(jìn)入go項(xiàng)目的目錄,并運(yùn)行g(shù)o build,生成exe文件,結(jié)果如下

在這里插入圖片描述

在這里插入圖片描述

最后運(yùn)行可執(zhí)行文件即可

在這里插入圖片描述

運(yùn)行內(nèi)部包含多個(gè) 包的go項(xiàng)目

前面介紹了如何在命令行使用go命令編譯和運(yùn)行包含多個(gè)go文件的項(xiàng)目。但是實(shí)際中的項(xiàng)目里面往往是有多個(gè)包組成,即有一定的層級(jí)結(jié)構(gòu),劃分不同的功能(我是這么理解的),有的用于配置Config包,有的用于數(shù)據(jù)模型生成data,有的用于服務(wù)service。直接用go build在項(xiàng)目根目錄是不好使的,出錯(cuò)。項(xiàng)目的運(yùn)行往往需要很多包,包括內(nèi)部和外部的。這里就可以用到go mod,管理項(xiàng)目依賴包,很好使。

介紹go module及區(qū)分go get

go get: 若是GOPATH設(shè)置的工程目錄,代碼在src目錄下,然后在命令提示符中輸入:go get github.com/astaxie/beego,這樣就在src目錄下生成了github.com/astaxie/beego包。注意:在使用GoLand工具時(shí),配置settings->Go->GOPATH->Project GOPATH為當(dāng)前工程目錄

值得一提的是,若是想要在其他位置新建go項(xiàng)目,就不得不更改系統(tǒng)變量GOPATH,將其設(shè)為新項(xiàng)目的位置,可能還要改goland中的GOPATH設(shè)置。比較麻煩。外部依賴包都存放在同一個(gè)位置,沒有項(xiàng)目私有的外部依賴包存放位置,不便于移植項(xiàng)目到連不上互聯(lián)網(wǎng)的電腦上。

go mod是golang1.11后引入的package依賴管理工具,用于解決之前沒有地方記錄依賴包具體版本的問題,方便依賴包管理。之前主要是用GOPATH 和 Vendor,vendor相對(duì)主流,但現(xiàn)在官方更提倡go mod。[3]

go module(mod):Go 的 1.11版本以上才能使用Go Module,1.13版本以下Go Module默認(rèn)關(guān)閉,首先需要設(shè)置環(huán)境變量

go env -w GOPROXY=https://goproxy.io,direct 
go env -w GO111MODULE=on set GO111MODULE=on

在GOPATH的目錄下,新建項(xiàng)目文件夾,進(jìn)入新建路徑執(zhí)行g(shù)o mod init,在文件夾下生成go.mod文件,然后將需要引入外部包的go文件置于項(xiàng)目目錄下,編譯文件,就會(huì)把外部包下載到本地的GOPATH/pkg/mod目錄下。

set GO111MODULE=off,GOPATH mode,查找vendor和GOPATH目錄。

set GO111MODULE=auto,如果當(dāng)前目錄不在$GOPATH 并且 當(dāng)前目錄(或者父目錄)下有g(shù)o.mod文件,則使用 GO111MODULE, 否則仍舊使用 GOPATH mode。

注意:在使用GoLand工具時(shí),不要配置Project GOPATH為當(dāng)前工程目錄,最好不要配置Project GOPATH,而是配置Module GOPATH [2] 在使用模塊的時(shí)候, GOPATH 是無意義的,不過它還是會(huì)把下載的依賴儲(chǔ)存在 GOPATH/src/mod 中,也會(huì)把 go install 的結(jié)果放在 GOPATH/bin(如果 GOBIN 不存在的話)

相關(guān)命令[3]

1、指定module根目錄并生成go.mod文件

go mod init example.com/hello

2、下載并添加依賴到go.mod文件中

go build src/service
go test src/sevice

3、查看module下的所有依賴

go list -m all

4、更新穩(wěn)定版依賴

go get rsc.io/sampler

5、更新為指定版本依賴

go list -m -versions rsc.io/sampler
 
rsc.io/sampler v1.0.0 v1.2.0 v1.2.1 v1.3.0 v1.3.1 v1.99.99
 
go get rsc.io/sampler@v1.3.1

6、清理無用的依賴

go mod tidy

7、將依賴復(fù)制到項(xiàng)目路徑的vendor文件夾中

go mod vendor

8、忽略cache里的包,只使用vendor目錄里的依賴進(jìn)行編譯

go build -mod=vendor

9、校驗(yàn)依賴并查看是否有修改

go mod verify

GoLand go module 配置

使用go module,依賴包存放于GOPATH下

優(yōu)先級(jí):global path < project path < module path

勾選enable module選項(xiàng)

在這里插入圖片描述

保持不變

在這里插入圖片描述

使用vendor

注意要使用命令行,并勾選vendor

在這里插入圖片描述

type *http.Server has no field or method ProxyRemoteAddr

是下載好依賴后,編譯時(shí)老是出現(xiàn)上訴問題,說外部依賴包里面有相關(guān)變量或方法沒定義。明明是網(wǎng)上下載的依賴包,自己又沒有修改,怎么會(huì)出現(xiàn)編譯通不過的問題?

對(duì)于https://github.com/csby/wsf來說就是這樣,出現(xiàn)問題

后面發(fā)現(xiàn)在它的readme.md文件中已經(jīng)有說明:

在這里插入圖片描述

提示我們對(duì)源代碼作出以下修改。

按照它的提示修改后,編譯通過。go項(xiàng)目成功跑起來。

發(fā)現(xiàn)這些花了我一天多的時(shí)間。

命令行運(yùn)行項(xiàng)目

項(xiàng)目結(jié)構(gòu)

srv(config()、data()、 enum()、 handler()、 service()、go.mod)

為項(xiàng)目添加go.mod文件

go mod init srv

往go.mod里面添加各個(gè)組件的依賴包

go build srv/config
go build srv/data
go build srv/enum
go build srv/service
go run srv/servive

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • Golang中正則表達(dá)式語法及相關(guān)示例

    Golang中正則表達(dá)式語法及相關(guān)示例

    正則表達(dá)式是一種用于匹配和操作文本的強(qiáng)大工具,它使用特殊的字符和語法來定義模式,下面這篇文章主要給大家介紹了關(guān)于Golang中正則表達(dá)式語法及相關(guān)示例的相關(guān)資料,需要的朋友可以參考下
    2024-05-05
  • 深入分析Golang Server源碼實(shí)現(xiàn)過程

    深入分析Golang Server源碼實(shí)現(xiàn)過程

    這篇文章深入介紹了Golang Server源碼實(shí)現(xiàn)過程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-02-02
  • ubuntu安裝golang并設(shè)置goproxy的方法步驟

    ubuntu安裝golang并設(shè)置goproxy的方法步驟

    在Ubuntu系統(tǒng)上安裝Go語言(Golang)有多種方法,包括使用包管理器、從源代碼編譯安裝以及使用版本管理工具如gvm,安裝完成后,為了方便管理Go語言項(xiàng)目依賴,需要設(shè)置GOPATH環(huán)境變量并配置Go代理,本文介紹ubuntu安裝golang并設(shè)置goproxy的方法,感興趣的朋友一起看看吧
    2024-10-10
  • Golang收支記賬程序詳細(xì)編寫過程

    Golang收支記賬程序詳細(xì)編寫過程

    這篇文章主要介紹了Golang實(shí)現(xiàn)收支記賬程序流程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2022-12-12
  • golang的時(shí)區(qū)和神奇的time.Parse的使用方法

    golang的時(shí)區(qū)和神奇的time.Parse的使用方法

    這篇文章主要介紹了golang的時(shí)區(qū)和神奇的time.Parse的使用方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • 利用ChatGPT編寫一個(gè)Golang圖像壓縮函數(shù)

    利用ChatGPT編寫一個(gè)Golang圖像壓縮函數(shù)

    這篇文章主要為大家詳細(xì)介紹了如何利用ChatGPT幫我們寫了一個(gè)Golang圖像壓縮函數(shù),文中的示例代碼簡潔易懂,感興趣的小伙伴可以嘗試一下
    2023-04-04
  • Go語言官方依賴注入工具Wire的使用教程

    Go語言官方依賴注入工具Wire的使用教程

    依賴注入是一種實(shí)現(xiàn)控制反轉(zhuǎn)且用于解決依賴性問題的設(shè)計(jì)模式。Golang?中常用的依賴注入工具主要有?Inject?、Dig?等。但是今天主要介紹的是?Go?團(tuán)隊(duì)開發(fā)的?Wire,一個(gè)編譯期實(shí)現(xiàn)依賴注入的工具,感興趣的可以了解一下
    2022-09-09
  • Go語言中panic和recover的實(shí)現(xiàn)

    Go語言中panic和recover的實(shí)現(xiàn)

    本文主要介紹了Go語言中panic和recover的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-10-10
  • golang中snappy的使用場合實(shí)例詳解

    golang中snappy的使用場合實(shí)例詳解

    在java 和go語言 大字符傳達(dá)的時(shí)候, 采用snappy 壓縮 解壓縮是最好的方案。下面這篇文章主要給大家介紹了關(guān)于golang中snappy使用場合的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下。
    2017-12-12
  • Windows下Goland的環(huán)境搭建過程詳解

    Windows下Goland的環(huán)境搭建過程詳解

    這篇文章主要介紹了Windows下Goland的環(huán)境搭建過程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10

最新評(píng)論