Go導(dǎo)入不同目錄下包報(bào)錯(cuò)的解決方法
一次正確的配置
結(jié)果文件結(jié)構(gòu)
這是操作完畢后的完整文件結(jié)構(gòu)樹狀圖,接下來將帶大家一步一步完成它
特別注意!入口文件 main.go
和 go.mod
在同一目錄下!這一點(diǎn)必須要保證!
└─gindemo.com
│ go.mod
│ go.sum
│ main.go
│
├─.idea
│ .gitignore
│ gindemo.com.iml
│ modules.xml
│ workspace.xml
│
└─src
└─Chapter1
C1.go
創(chuàng)建項(xiàng)目
該項(xiàng)目創(chuàng)建使用goland2020
任選一個(gè)文件夾創(chuàng)建目錄,注意項(xiàng)目的名字最好依照這個(gè)格式: xxx.xxx
點(diǎn)號(hào)的后綴隨便寫,只要保證上面這樣的格式就好了
我們新建一個(gè)項(xiàng)目 gindemo.com
此時(shí)打開 goland 的設(shè)置頁面,設(shè)置好 GOROOT
GOPATH
設(shè)置過程請(qǐng)參考 gin 相關(guān)文章!
新建文件 main.go (和 go.mod 同目錄)
// 入口點(diǎn)入口點(diǎn)?。?!必須要main?。。e忘了求求你了 package main import ( "github.com/gin-gonic/gin" "net/http" ) func main() { app := gin.Default() app.GET("/shit", func(context *gin.Context) { context.JSON(http.StatusOK, gin.H{ "error": "shit", }) }) app.Run(":10086") }
這是一個(gè)最簡單的 gin 后端,因?yàn)槲覀冎芭渲煤昧?GOPATH
,所以這里 goland 會(huì)為我們自動(dòng)導(dǎo)包,故不會(huì)出現(xiàn)飄紅現(xiàn)象!
但實(shí)際上 go.mod
內(nèi)部依然沒有配置依賴,我們需要在項(xiàng)目目錄下打開命令行,輸入 go mod tidy
為我們自動(dòng)處理好依賴關(guān)系;
此時(shí)配置好運(yùn)行參數(shù)直接運(yùn)行 main 方法就可以開啟我們的后端服務(wù)了
不同文件夾下導(dǎo)包
新建文件(大小寫不是必要的) src/Chapter1/C1.go
代碼不是重點(diǎn),我們要做的是在 main.go
里面使用該文件的 BindDemo
方法
方法名需要大寫開頭!
package Chapter1 import ( "fmt" "github.com/gin-gonic/gin" "net/http" ) ... func BindDemo(c *gin.Context) { ... }
來到我們的 go.mod
來分析一下最關(guān)鍵的三行內(nèi)容
- 第一行即 gomod 管理的所在包名稱
- 第二行即 go 版本
- 第三行及剩余行即導(dǎo)入的依賴
module gindemo.com go 1.19 require github.com/gin-gonic/gin v1.8.2
此時(shí)記下我們 go.mod
管理的包名叫做: gindemo.com
(其實(shí)就是咱們的項(xiàng)目名)
打開 main.go 修改代碼為
package main import ( // 這表示取別名,用小寫字母c代表后面導(dǎo)入的內(nèi)容 c "gindemo.com/src/Chapter1" "github.com/gin-gonic/gin" "net/http" ) func main() { app := gin.Default() app.GET("/shit", func(context *gin.Context) { context.JSON(http.StatusOK, gin.H{ "error": "shit", }) }) // 在這里調(diào)用 C1.go 文件內(nèi)的方法 app.GET("/c1",c.BindDemo) app.Run(":10086") }
我們來分析一下 import 里面這行代碼的含義:c "gindemo.com/src/Chapter1"
- 小寫字母 c,表示給后面的包取個(gè)別名,我們之后直接使用 c 來調(diào)用
- 導(dǎo)包絕不可以使用相對(duì)路徑,必須要用 go.mod 里面 module 行給出的路徑打頭,然后依次索引到我們的文件
- 這里是直接導(dǎo)入 Chapter1 整個(gè)包,也即導(dǎo)入其所擁有的所有 go 文件
此時(shí)你發(fā)現(xiàn) goland 直接飄紅,但這不是我們的問題!直接運(yùn)行是可以跑起來的!
由于我們直接導(dǎo)入 Chapter1 整個(gè)包,所以按照我們定的別名 c ,直接調(diào)用方法即可使用!
總結(jié)
到此這篇關(guān)于Go導(dǎo)入不同目錄下包報(bào)錯(cuò)的解決方法的文章就介紹到這了,更多相關(guān)Go導(dǎo)入不同目錄包報(bào)錯(cuò)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- go語言import報(bào)錯(cuò)處理圖文詳解
- Go語言將string解析為time.Time時(shí)兩種常見報(bào)錯(cuò)
- 解決MySQL報(bào)錯(cuò):The last packet sent successfully to the server was 0 milliseconds ago.
- go?mod?tidy報(bào)錯(cuò)解決方法詳解
- go引入自建包名報(bào)錯(cuò):package?XXX?is?not?in?std解決辦法
- goland安裝1.7版本報(bào)錯(cuò)Unpacked?SDK?is?corrupted解決
- Django-Xadmin后臺(tái)首頁添加小組件報(bào)錯(cuò)的解決方案
- Django報(bào)錯(cuò)TemplateDoesNotExist的問題及解決
- 在 SHELL 腳本中調(diào)用另一個(gè) SHELL 腳本的方法(報(bào)錯(cuò): go:not found)
- 解決MongoDB?位置查詢報(bào)錯(cuò)planner?returned?error:?unable?to?find?index?for?$geoNear?query的問題
- django報(bào)錯(cuò)設(shè)置auth User的解決
- 解決Oracle?DISTINCT?報(bào)錯(cuò)?inconsistent?datatypes:?expected?-?got?CLOB(數(shù)據(jù)類型不一致:?應(yīng)為?-,?但卻獲得?CLOB)的問題
- Java中報(bào)錯(cuò)org.springframework.jdbc.UncategorizedSQLException的多種解決方法
- 執(zhí)行g(shù)o?build報(bào)錯(cuò)go:?go.mod?file?not?found?in?current?directory?or?any?parent?directory
- 解決MongoDB6.0報(bào)錯(cuò):"mongo"不是內(nèi)部或外部命令,也不是可運(yùn)行的程序或批處理文件
- maven報(bào)錯(cuò):Failed to execute goal on project問題及解決
- Mongodb啟動(dòng)報(bào)錯(cuò)完美解決方案:about to fork child process,waiting until server is ready for connections.
- golang中package?is?not?in?GOROOT報(bào)錯(cuò)的真正解決辦法
- Go語言報(bào)錯(cuò):'godoc'?不是內(nèi)部或外部命令,也不是可運(yùn)行的程序(godoc無法使用處理)解決方法
相關(guān)文章
Go標(biāo)準(zhǔn)庫http?server的優(yōu)雅關(guān)閉深入理解
這篇文章主要為大家介紹了Go標(biāo)準(zhǔn)庫http?server的優(yōu)雅有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪關(guān)閉深入理解2024-01-01Go語言fmt庫詳解與應(yīng)用實(shí)例(格式化輸入輸出功能)
fmt庫是Go語言中一個(gè)強(qiáng)大而靈活的庫,提供了豐富的格式化輸入輸出功能,通過本文的介紹和實(shí)例演示,相信你對(duì)fmt庫的使用有了更深的理解,感興趣的朋友一起看看吧2023-10-10go語言阻塞函數(shù)和非阻塞函數(shù)實(shí)現(xiàn)
本文主要介紹了go語言阻塞函數(shù)和非阻塞函數(shù)實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03Go中string與[]byte高效互轉(zhuǎn)的方法實(shí)例
string與[]byte經(jīng)常需要互相轉(zhuǎn)化,普通轉(zhuǎn)化會(huì)發(fā)生底層數(shù)據(jù)的復(fù)制,下面這篇文章主要給大家介紹了關(guān)于Go中string與[]byte高效互轉(zhuǎn)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2021-09-09Golang校驗(yàn)字符串是否JSON格式的方法總結(jié)
這篇文章主要為大家詳細(xì)介紹了Golang中校驗(yàn)字符串是否JSON格式的方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下2023-04-04