使用 goland 開發 golang 項目環境配置

方式1:使用 GOPATH 和 GOROOT


在 goland 中打開:Settings - Go,會看到 GOROOT、GOPATH,其相關解釋與配置如下:

  • GOROOT:對應 go 的安裝路徑,例如:D:\go\bin
  • GOPATH:是我們的工作空間,保存 go 代碼和第三方依賴包

GOPATH可以設置多個,其中,第一個將會是默認的包目錄,使用 go get 下載的包都會在第一個 path 中的 src 目錄下,使用 go install 時,在哪個GOPATH中找到了這個包,就會在哪個GOPATH下的bin目錄生成可執行文件。

使用GOPATH時,Go會在以下為目錄中搜索包:

  • GOROOT/src:Go標準庫
  • GOPATH/src:應用自身代碼和第三方依賴的代碼

引入包時,路徑從 src 的下一級文件地址開始寫,編譯器會自動從 src 下開始引入,如下:

// 自定義包的絕對路徑為:D:\learing\goproject\src\gocode\testproject001\model
import ("fmt""gocode/testproject001/model"
)

在使用方式一導入自定義包時,報錯如下:

main.go:5:2: package gocode/testproject001/model is not in std (D:\go\src\gocode\testproject001\model)

注意:該方式易出錯,不建議使用

方式2:使用 go.mod


從 Go1.11 版本之后,已經不再推薦使用 GOPATH ,而是使用 GOMODULE 來管理程序文件。

查看項目的 go 配置


首先在終端下進入到項目目錄,執行 go env 查看 go 的相關配置,具體如下:

D:\learing\goproject\src\gocode\testproject001\main>go envset GO111MODULE=on
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\heliubei\AppData\Local\go-build
set GOENV=C:\Users\heliubei\AppData\Roaming\go\env
set GOEXE=.exe
set GOEXPERIMENT=
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOINSECURE=
set GOMODCACHE=D:\learing\goproject\pkg\mod
set GONOPROXY=
set GONOSUMDB=
set GOOS=windows
set GOPATH=D:\learing\goproject
set GOPRIVATE=
set GOPROXY=https://goproxy.io,direc
set GOROOT=D:\go
set GOSUMDB=sum.golang.org
set GOTMPDIR=
set GOTOOLCHAIN=auto
set GOTOOLDIR=D:\go\pkg\tool\windows_amd64
set GOVCS=
set GOVERSION=go1.21.3
set GCCGO=gccgo
set GOAMD64=v1
set AR=ar
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set GOMOD=NUL
set GOWORK=
set CGO_CFLAGS=-O2 -g
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-O2 -g
set CGO_FFLAGS=-O2 -g
set CGO_LDFLAGS=-O2 -g
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -mthreads -Wl,--no-gc-sections -fmessage-length=0 -ffile-prefix-map=C:\Users\heliubei\AppData\Local\Temp\go-build3874952850=/tmp/go-build -gno-record-gcc-switches

如果 GO111MODULE = off 可通過如下命令進行修改,以確保 GO111MODULE = on

go env -w GO111MODULE = on

GO111MODULE 介紹


GO111MODULE 有三個值:off、on 和 auto,具體介紹如下:

1)GO111MODULE=off,go命令行將不會支持module功能,尋找依賴包的方式將會沿用舊版本那種通過vendor目錄或者GOPATH模式來查找。

2)GO111MODULE=on,go命令行會使用modules,而一點也不會去GOPATH目錄下查找。

3)GO111MODULE=auto,默認值,go命令行將會根據當前目錄來決定是否啟用module功能。這種情況下可以分為兩種情形:

  • 當前目錄在GOPATH/src之外且該目錄包含go.mod文件
  • 當前文件在包含go.mod文件的目錄下面

go.mod 使用


1)進入項目路徑下執行 go mod init + 模塊名 命令,在項目文件下創建一個 go.mod 文件,具體如下:

D:\learing\goproject>go mod init goprojectgo: creating new go.mod: module goproject
go: to add module requirements and sums:go mod tidy

我的項目目錄為:D:\learing\goproject

2)引入自定義包時,路徑應從 go.mod 所在的路徑下寫起

package mainimport ("fmt""goproject/src/gocode/testproject001/model"
)func main() {//創建person結構體示例:p := model.NewPerson("麗麗")p.SetAge(20)fmt.Println(p.Name)fmt.Println(p.GetAge())fmt.Println(*p)
}

自定義包的絕對路徑為:D:\learing\goproject\src\gocode\testproject001\model

3)成功導入自定義包

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/160575.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/160575.shtml
英文地址,請注明出處:http://en.pswp.cn/news/160575.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JavaScript中的事件循環 為什么是微任務先運行

無意中看到這個問題,以下是個人的看法 1、性能和響應性: 微任務通常比宏任務執行得更快,因為微任務通常涉及更少的工作量。將微任務放在宏任務之前可以盡早執行那些需要快速響應的任務,提高系統的響應性能。 2、Promise 的異步特…

3d標簽云實現過程(tagcloud.js)同步原生和 vue

寫在前面 本來是沒有準備寫這個知識點,但是下載這個 js 的時候發現很多都是要錢或者是積分的,我就不明白了一個開源了這么久的 js 怎么還有人拿來掙錢的,同時還有一些只有原生 html 的例子,但是現在都是 框架主導的一些項目&#…

【Exception】Error: Dynamic require of “path“ is not supported

Talk is cheap, show me the code. 環境 | Environment kversionOSwindows 11Node.jsv18.14.2npm9.5.0vite5.0.0vue3.3.8 報錯日志 | Error log >npm run dev> app10.0.0 dev > viteERROR failed to load config from C:\code\frontend\app1\vite.config.js …

【LeetCode二叉樹進階題目】606,102,107

二叉樹進階題目 606. 根據二叉樹創建字符串解題思路及實現 102. 二叉樹的層序遍歷解題思路及實現 107. 二叉樹的層序遍歷 II解題思路及實現 606. 根據二叉樹創建字符串 描述 給你二叉樹的根節點 root ,請你采用前序遍歷的方式,將二叉樹轉化為一個由括號…

從零開始學習typescript——運算符(算術運算符、賦值運算符、比較運算符)

算術運算符 算術運算符主要是針對數值類型和長整型;包括有加法、減法、乘法、除法、自增、自減等運算 加法() let x:number1let y:number 2console.log(xy)減法(-) let x:number1let y:number 2console.log(y-x)乘法…

晶振有哪幾種?晶振旁邊的兩個電容起什么作用?

晶振可以分為普通晶振、溫補晶振、壓控晶振、恒溫晶振、差分晶振。 普通晶振通常用作微處理器的時鐘器件,主要應用于那些穩定度要求不要的設備中,例如電視機、微波爐。 溫補晶振,在晶振內部采取了對晶體頻率、溫度特性進行補償,已…

軟件工程理論與實踐 (呂云翔) 第十三章 軟件測試方法與過程課后習題及其答案解析

第十三章 軟件測試方法與過程 1.判斷題 (1)白盒測試無須考慮模塊內部的執行過程和程序結構,只需了解模塊的功能即可。() 解析:白盒測試需要考慮模塊內部的執行過程和程序結構,以便設計測試用例和覆蓋代碼路徑。 &a…

軟文推廣有什么作用?媒介盒子分享

數字時代,品牌方以往的營銷打法可能需要應時而變,傳統的廣告模式很難將品牌推廣出去,原因就在于傳統廣告的成本高昂并且針對性較弱,而軟文推廣能夠通過較低的成本將產品或品牌信息送到消費者面前,今天媒介盒子就來分享…

58同城算法工程師一面&二面 面試題

來源:投稿 作者:LSC 編輯:學姐 一面 40min 1.Gbdt和xgboost的區別 XGBoost是對GBDT的改進和擴展,它提供了更高的效率、更好的性能、正則化技術、內置特征選擇等功能。 (1)正則化: GBDT使用基本的樹模型,并在每一輪…

vue3.0 + qiankun遇到的問題

進入子應用再回到主應用切換動態路由時 TypeError: Cannot read properties of undefined (reading ‘appWrapperGetter’) application ‘plat’ died in status UNMOUNTING: instance.$destroy is not a function 第一個報錯是因為子應用切走時沒有銷毀 vue的實例&#xff0…

常用RFC規范匯總

官網:https://www.rfc-editor.org/ The RFC Series (ISSN 2070-1721) contains technical and organizational documents about the Internet, including the specifications and policy documents produced by five streams: the Internet Engineering Task Force …

TCP/IP

分層模型 TCP 傳輸控制協議 UDP 用戶數據包協議 四層 應用層 負責發送/接收消息 傳輸層 負責拆分和組裝 .期間會有編號 網絡層 TCP/UDP 屬于網絡層, 不會判斷和處理編號 數據鏈路層 以太網 ,網絡設備 TCP 連接 TCP連接需要端口,進行通信 Java 通過Socket 接收消息 發送 …

基于SpringBoot+Vue的體檢預約管理系統

基于SpringBootVue的體檢預約管理系統的設計與實現~ 開發語言:Java數據庫:MySQL技術:SpringBootMyBatisVue工具:IDEA/Ecilpse、Navicat、Maven 系統展示 主頁 管理員界面 用戶界面 摘要 體檢預約管理系統是一種基于Spring Boot…

Vue3常用操作

一、Vue3項目構建 1、安裝最新版本vue npm create vuelatest 2、選擇需要的配置 3、進入項目 cd 項目名稱 4、下載依賴 npm install 5、啟動項目 npm run dev

chatGLM3微調

文章目錄 一、問答數據集生成器使用設置問題啟動使用產出效果 二、進行微調第一步:下載模型第二步:項目準備2.1 下載項目2.2 然后使用 pip 安裝依賴2.3 開始 第三步進行微調3.1安裝相關依賴3.2準備數據集,并且上傳3.3對數據集進行預處理3.4 進…

如何使用技術SEO來優化評論

你在網上購買嗎?我的意思是,在當今時代,誰不這樣做?作為買家,無論您想購買什么,您都了解全面和高質量評論的價值。這是您在決定是否購買產品時考慮的重要因素。 這就是為什么許多人在網上購物之前使用評論…

移動端click事件、touch事件、tap事件的區別

在移動端,有三種常見的事件類型,click事件、touch事件、tap事件。它們的區別如下: click事件:click事件是在用戶點擊屏幕的時候觸發,如果是移動設備,則會在用戶點擊屏幕的同時觸發touch事件。但是&#xff…

【開源】基于Vue和SpringBoot的康復中心管理系統

項目編號: S 056 ,文末獲取源碼。 \color{red}{項目編號:S056,文末獲取源碼。} 項目編號:S056,文末獲取源碼。 目錄 一、摘要1.1 項目介紹1.2 項目錄屏 二、功能模塊2.1 普通用戶模塊2.2 護工模塊2.3 管理員…

uni-app中vue3+setup實現下拉刷新、上拉加載更多效果

在小程序或各類app中,下拉刷新和上拉加載更多是極為常見和使用非常頻繁的兩個功能,通過對這兩個功能的合理使用可以極大的方便用戶進行操作。 合理的設計邏輯才能更容易挽留住用戶,因為這些細節性的小功能點就變得極為重要起來。 那么在uni…

基于WEB的停車場管理系統的設計和實現【附源碼】

基于WEB的停車場管理系統的設計和實現 摘 要 隨著現代社會的快速發展,人民生活水平快速提高,汽車的數量飛速增加,與此同時停車問題也越來越受到人們的關注,為了實現對停車場進行有效的管理,結合一些停車場的模式和現狀…