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

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

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

一次正確的配置

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

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

特別注意!入口文件 main.gogo.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)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關(guān)文章

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

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

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

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

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

    golang 之import和package的使用

    這篇文章主要介紹了golang 之import和package的使用,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-02-02
  • Go標(biāo)準(zhǔn)庫http?server的優(yōu)雅關(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-01
  • Go語言fmt庫詳解與應(yīng)用實(shí)例(格式化輸入輸出功能)

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

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

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

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

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

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

    Go中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-09
  • Golang多模塊開發(fā)的詳細(xì)過程

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

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

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

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

最新評(píng)論