Go module的介绍及使用

初步学习goland语言,对于1.11版本后的新特性 go module初步认识一下。
Module即是模块概念,官方定义为:一个相关Go包的集合,它是源代码更替和版本控制的单元,即是包的管理工具,以前的依赖GOPATH安装的包都是在 $GOPATH/src/目录,现在采用了go mod 管理相关依赖和包package,就是安装到 $GOPATH/pkg/ 下面。modules替换旧的基于GOPATH的方法来指定在给定构建中使用哪些源文件。

下面说一下设置

设置go mod和go proxy

// 设置开启go mod 管理依赖包
go env -w GO111MODULE=on
// 修改代理路径
go env -w GOPROXY=https://goproxy.cn,direct // 使用七牛云的
// 查看相关配置
go env

GO111MODULE 有三个值:off, on和auto(默认值)。

GO111MODULE=off,go命令行将不会支持module功能,寻找依赖包的方式将会沿用旧版本那种通过vendor目录或者GOPATH模式来查找。
GO111MODULE=on,go命令行会使用modules,而一点也不会去GOPATH目录下查找。
GO111MODULE=auto,默认值,go命令行将会根据当前目录来决定是否启用module功能。

一旦GO111MODULE = on 开始了,那么$GOPATH/src 即将失效,不在src下面安装依赖和包,更到了$GOPATH/pkg 下面

如果当你使用了go mod 管理依赖时候可能会出现 相关的包无法引入问题,例如:gin框架

我曾经试过,所以顺便讲一下。

创建main.go 文件 代码如下:

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()
}

发现:github.com/gin-gonic/gin 无法引进

提示:no required module provides package github.com/gin-gonic/gin;

// mod重新初始化
go mod init 项目名称
// 安装或者修改 你的go.mod 文件(安装package)下载指定的包
go mod edit -require github.com/gin-gonic/gin@latest

// 记得执行下面命令 不然报错 go: github.com/gin-gonic/gin@v1.7.1: missing go.sum entry;
// 移除不需要的依赖包
go mod tidy

记得执行 go mod tidy 命令,会在go.mod 目录下生成一个 go.sum文件,如果没有执行就会报错

go: github.com/gin-gonic/gin@v1.7.1: missing go.sum entry;

go.sum 是记录所依赖的项目的版本的锁定,执行完以后,go.mod 将会自动引入相关的包

go mod 相关命令

查看命令
go help mod

go mod download	download modules to local cache(下载依赖包)

go mod edit	edit go.mod from tools or scripts(编辑go.mod)

go mod init 项目目录 初始化mod 命令

其中发现一个比我更加详细的关于go Module的文章:https://blog.csdn.net/benben_2015/article/details/82227338

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值