背景

准备运行下面代码

package main

import (

"github.com/gin-gonic/gin"

)

func main() {

// 创建一个默认的路由引擎

r := gin.Default()

// GET:请求方式;/hello:请求的路径

// 当客户端以GET方法请求/hello路径时,会执行后面的匿名函数

r.GET("/hello", func(c *gin.Context) {

// c.JSON:返回JSON格式的数据

c.JSON(200, gin.H{

"message": "Hello world!",

})

})

// 启动HTTP服务,默认在0.0.0.0:8080启动服务

r.Run()

}

结果报错:

no required module provides package : go.mod file not found in current directory or any parent directory;

也就是说找不到导入模块的包

尝试1:

go get -u github.com/gin-gonic/gin

没有效果

尝试2:关于golang第三方包的引用报错:no required module provides package_编程哲学家的博客-CSDN博客

网上基本都是这个解决方案:执行:go env -w GO111MODULE=auto

但是我的已经打开了,所以排除这个解决方案。

**尝试3:**我又重新建了个项目,发现另一个运行时报错结果是:

1.go:4:2: no required module provides package github.com/gin-gonic/gin; to add it: go get github.com/gin-gonic/gin

注意这两个报错的区别,这个提示了go get github.com/gin-gonic/gin

说明原项目是缺少东西的,我对比了一下发现原项目代码所在的文件夹中缺少go.mod这个文件

通过研究Go go.mod详解_绛洞花主敏明的博客-CSDN博客_go.mod文件

得到了解决方案

解决方法

在报错的代码文件夹打开终端,运行

go mod init 新模块名字

就可以初始化go.mod,这样再运行

go get -u github.com/gin-gonic/gin

就OK了

总结

Go.mod是Golang1.11版本新引入的官方包管理工具用于解决之前没有地方记录依赖包具体版本的问题,方便依赖包的管理。Go.mod其实就是一个Modules,关于Modules的官方定义为:Modules是相关Go包的集合,是源代码交换和版本控制的单元。go命令直接支持使用Modules,包括记录和解析对其他模块的依赖性。Modules替换旧的基于GOPATH的方法,来指定使用哪些源文件。Modules和传统的GOPATH不同,不需要包含例如src,bin这样的子目录,一个源代码目录甚至是空目录都可以作为Modules,只要其中包含有go.mod文件。

最后

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

小编已加密:aHR0cHM6Ly9kb2NzLnFxLmNvbS9kb2MvRFVrVm9aSGxQZUVsTlkwUnc==出于安全原因,我们把网站通过base64编码了,大家可以通过base64解码把网址获取下来。