欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Go導(dǎo)入不同目錄下包報錯的解決方法

 更新時間:2023年06月07日 10:47:37   作者:知奕奕  
包(package)是多個Go源碼的集合,是一種高級的代碼復(fù)用方案,下面這篇文章主要給大家介紹了關(guān)于Go導(dǎo)入不同目錄下包報錯的解決方法,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下

一次正確的配置

結(jié)果文件結(jié)構(gòu)

這是操作完畢后的完整文件結(jié)構(gòu)樹狀圖,接下來將帶大家一步一步完成它

特別注意!入口文件 main.gogo.mod 在同一目錄下!這一點必須要保證!

└─gindemo.com
    │  go.mod
    │  go.sum
    │  main.go
    │
    ├─.idea
    │      .gitignore
    │      gindemo.com.iml
    │      modules.xml
    │      workspace.xml
    │
    └─src
        └─Chapter1
                C1.go

創(chuàng)建項目

該項目創(chuàng)建使用goland2020

任選一個文件夾創(chuàng)建目錄,注意項目的名字最好依照這個格式: xxx.xxx

點號的后綴隨便寫,只要保證上面這樣的格式就好了

我們新建一個項目 gindemo.com

此時打開 goland 的設(shè)置頁面,設(shè)置好 GOROOT GOPATH

設(shè)置過程請參考 gin 相關(guān)文章!

新建文件 main.go (和 go.mod 同目錄)

// 入口點入口點?。?!必須要main?。?!別忘了求求你了
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")
}

這是一個最簡單的 gin 后端,因為我們之前配置好了 GOPATH ,所以這里 goland 會為我們自動導(dǎo)包,故不會出現(xiàn)飄紅現(xiàn)象!

但實際上 go.mod 內(nèi)部依然沒有配置依賴,我們需要在項目目錄下打開命令行,輸入 go mod tidy 為我們自動處理好依賴關(guān)系;

此時配置好運行參數(shù)直接運行 main 方法就可以開啟我們的后端服務(wù)了

不同文件夾下導(dǎo)包

新建文件(大小寫不是必要的) src/Chapter1/C1.go

代碼不是重點,我們要做的是在 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

此時記下我們 go.mod 管理的包名叫做: gindemo.com (其實就是咱們的項目名)

打開 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,表示給后面的包取個別名,我們之后直接使用 c 來調(diào)用
  • 導(dǎo)包絕不可以使用相對路徑,必須要用 go.mod 里面 module 行給出的路徑打頭,然后依次索引到我們的文件
  • 這里是直接導(dǎo)入 Chapter1 整個包,也即導(dǎo)入其所擁有的所有 go 文件

此時你發(fā)現(xiàn) goland 直接飄紅,但這不是我們的問題!直接運行是可以跑起來的!

由于我們直接導(dǎo)入 Chapter1 整個包,所以按照我們定的別名 c ,直接調(diào)用方法即可使用!

總結(jié) 

到此這篇關(guān)于Go導(dǎo)入不同目錄下包報錯的解決方法的文章就介紹到這了,更多相關(guān)Go導(dǎo)入不同目錄包報錯內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關(guān)文章

  • go語言中slice,map,channl底層原理

    go語言中slice,map,channl底層原理

    這篇文章主要介紹了go語言中slice,map,channl底層原理,slice,map,channl是我們Go語言中最最常用的幾個數(shù)據(jù)結(jié)構(gòu),對于其更多相關(guān)內(nèi)容需要的小伙伴可以參考下面文章詳細內(nèi)容
    2022-06-06
  • Go 切片導(dǎo)致內(nèi)存泄露的幾種原因

    Go 切片導(dǎo)致內(nèi)存泄露的幾種原因

    某些情況下,對一個已存在的切片或數(shù)組進行切分操作可能會導(dǎo)致內(nèi)存泄漏,本文主要介紹了Go 切片導(dǎo)致內(nèi)存泄露的幾種原因,感興趣的可以了解一下
    2023-05-05
  • golang 之import和package的使用

    golang 之import和package的使用

    這篇文章主要介紹了golang 之import和package的使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-02-02
  • Go標準庫http?server的優(yōu)雅關(guān)閉深入理解

    Go標準庫http?server的優(yōu)雅關(guān)閉深入理解

    這篇文章主要為大家介紹了Go標準庫http?server的優(yōu)雅有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪關(guān)閉深入理解
    2024-01-01
  • Go語言fmt庫詳解與應(yīng)用實例(格式化輸入輸出功能)

    Go語言fmt庫詳解與應(yīng)用實例(格式化輸入輸出功能)

    fmt庫是Go語言中一個強大而靈活的庫,提供了豐富的格式化輸入輸出功能,通過本文的介紹和實例演示,相信你對fmt庫的使用有了更深的理解,感興趣的朋友一起看看吧
    2023-10-10
  • go語言阻塞函數(shù)和非阻塞函數(shù)實現(xiàn)

    go語言阻塞函數(shù)和非阻塞函數(shù)實現(xiàn)

    本文主要介紹了go語言阻塞函數(shù)和非阻塞函數(shù)實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Go語言算法之尋找數(shù)組第二大元素的方法

    Go語言算法之尋找數(shù)組第二大元素的方法

    這篇文章主要介紹了Go語言算法之尋找數(shù)組第二大元素的方法,以實例形式分析了不排序、只循環(huán)一次來實現(xiàn)尋找數(shù)組第二大元素的技巧,是比較典型的算法,需要的朋友可以參考下
    2015-02-02
  • Go中string與[]byte高效互轉(zhuǎn)的方法實例

    Go中string與[]byte高效互轉(zhuǎn)的方法實例

    string與[]byte經(jīng)常需要互相轉(zhuǎn)化,普通轉(zhuǎn)化會發(fā)生底層數(shù)據(jù)的復(fù)制,下面這篇文章主要給大家介紹了關(guān)于Go中string與[]byte高效互轉(zhuǎn)的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2021-09-09
  • Golang多模塊開發(fā)的詳細過程

    Golang多模塊開發(fā)的詳細過程

    這篇文章主要給大家介紹了關(guān)于Golang多模塊開發(fā)的詳細過程,文中通過實例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2023-02-02
  • Golang校驗字符串是否JSON格式的方法總結(jié)

    Golang校驗字符串是否JSON格式的方法總結(jié)

    這篇文章主要為大家詳細介紹了Golang中校驗字符串是否JSON格式的方法,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起了解一下
    2023-04-04

最新評論