GoLang中Module的基本使用方法

目录
  • 前言
  • 1、开启go module
  • 2、用goland打开项目
    • (1)设置镜像地址
    • (2)导入Gin包检查go module是否使用正常
    • (3)使用Gin
    • (4)执行、发送请求
  • 3、go module的基本命令
  • 总结

前言

go module是类似于java中的maven,是包的管理工具,在没有这个go module之前,都是配置本地的GOPATH,创建的每个项目也都必须创建在这个GOPATH的src目录下,且项目的go文件不能重名

go module是在go1.1.1版本推出的

1、开启go module

在本地上打开终端执行go env

可看到环境的相关配置

GO111MODULE:默认是为空,有三个值,on(开启)、off(关闭)、auto(自动)

GOPROXY:配置下载包的地址,我们可以更换为国内镜像源

(1)执行 go env -w GO111MODULE=on设置go module为开启状态

(2)设置为国内镜像源,这是由国内七牛云提供 go env -w GOPROXY=https://goproxy.cn,direct

这样go module就开启好了,开启之后如何使用?先执行go mod help,不管在学什么只要是有命令行的,先执行help命令。

可看到其中是有初始化命令,而go module是用来管理项目的第三方包的,所以我们可以创建一个文件夹,在文件夹中初始化

可看出新的文件 go.mod

2、用goland打开项目

(1)设置镜像地址

不设置的话会报exec: “git”: executable file not found in %PATH%一.git

(2)导入Gin包检查go module是否使用正常

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

下载成功,可查看上面初始化创建的go.mod文件,可看到导入了一些包

(3)使用Gin

package main

import  "github.com/gin-gonic/gin"
func main()  {
	engine := gin.Default()
	engine.GET("/test", func(context *gin.Context) {
		context.JSON(200,gin.H{
			"message":"the project is test module gin",
		})
	})
	engine.Run()
}

(4)执行、发送请求

3、go module的基本命令

(1)go mod init 项目名称:初始化命令

(2)go mod download : 下载modules到本地cache,路径是go env中的GOMODCACHE,跟java的maven,也就是你的本地仓库

(3)go mod tidy : 添加缺失或删除没有使用的包

(4)go mod verify:验证依赖是否正确

(5)go mod why:查找依赖

(6)go mod edit:可执行go help mod edit查看用法,也可到官网查看,主要也是用来操作go.mod文件的

总结

到此这篇关于GoLang中Module基本使用的文章就介绍到这了,更多相关Go Module使用内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 详解Go module的介绍及使用

    Go1.1.1版本发布(2018-08-24发布)已经过去几天,从官方的博客中看到,有两个比较突出的特色,一个就是今天讲的module,模块概念.目前该功能还在试验阶段,有些地方还需要不断的进行完善.在官方正式宣布之前,打算不断修正这种支持.到时候就可以移除对GOPATH和go get命令的支持. 如果你想现在想就试试这个新功能module,需要你将你的代码仓库放到GOPATH/src目录之外.然后在那个目录下创建一个go.mod文件,从文件树中运行go命令. 主要概念介绍 module是一个相

  • go module使用本地包的方法示例

    go module的使用非常简单 初始化go.mod go mod init 整理依赖包 go mod tidy 如果想缓存到vendor目录 go mod vendor 执行命令之后都会自动把依赖搞定. 但是, 如果我们是本地开发的包, 还没有远程仓库的时候, 要怎么解决本地包依赖问题呢? 使用replace将远程包替换为本地包服务 幸运的是, go module 提供了另外一个方案, replace, 这个replace怎么使用的呢? 我们先看一下一个最基本的mod文件 module GoR

  • GoLang中Module的基本使用方法

    目录 前言 1.开启go module 2.用goland打开项目 (1)设置镜像地址 (2)导入Gin包检查go module是否使用正常 (3)使用Gin (4)执行.发送请求 3.go module的基本命令 总结 前言 go module是类似于java中的maven,是包的管理工具,在没有这个go module之前,都是配置本地的GOPATH,创建的每个项目也都必须创建在这个GOPATH的src目录下,且项目的go文件不能重名 go module是在go1.1.1版本推出的 1.开启g

  • golang 中获取字符串个数的方法

    在 golang 中不能直接用 len 函数来统计字符串长度,查看了下源码发现字符串是以 UTF-8 为格式存储的,说明 len 函数是取得包含 byte 的个数 // string is the set of all strings of 8-bit bytes, conventionally but not // necessarily representing UTF-8-encoded text. A string may be empty, but // not nil. Values

  • golang中sync.Mutex的实现方法

    目录 mutex 的实现思想 golang 中 mutex 的实现思想 mutex 的结构以及一些 const 常量值 Mutex 没有被锁住,第一个协程来拿锁 Mutex 仅被协程 A 锁住,没有其他协程抢锁,协程 A 释放锁 Mutex 已经被协程 A 锁住,协程 B 来拿锁 lockSlow() runtime_doSpin() runtime_canSpin() Mutex 被协程 A 锁住,协程 B 来抢锁但失败被放入等待队列,此时协程 A 释放锁 unlockSlow() Mutex

  • Golang中map数据类型的使用方法

    目录 前言 案例 map map定义 map声明 map的操作 总结 前言 今天咱们来学习一下golang中的map数据类型,单纯的总结一下基本语法和使用场景,也不具体深入底层.map类型是什么呢?做过PHP的,对于数组这种数据类型是一点也不陌生了.PHP中的数组分为索引数组和关联数组.例如下面的代码: // 索引数组[数组的key是一个数字, 从0,1,2开始递增] $array = [1, '张三', 12]; // 关联数组[数组的key是一个字符串,可以自定义key的名称] $array

  • golang中使用sync.Map的方法

    背景 go中map数据结构不是线程安全的,即多个goroutine同时操作一个map,则会报错,因此go1.9之后诞生了sync.Map sync.Map思路来自java的ConcurrentHashMap 接口 sync.map就是1.9版本带的线程安全map,主要有如下几种方法: Load(key interface{}) (value interface{}, ok bool) //通过提供一个键key,查找对应的值value,如果不存在,则返回nil.ok的结果表示是否在map中找到值

  • docker(alpine+golang) 中 hosts 不生效问题解决方法

    目录 一.问题 二.解决 方法一.增加配置 方法二.映射配置 方法三.修改镜像 知识点延伸 一.问题 把使用 golang 开发的服务程序部署在以 alpine 为基础镜像的容器中,设置了 /etc/hosts,却没有生效,但是在终端中使用 ping 和 curl 域名都可以正常访问. 二.解决 出现上述问题的根本原因是 DNS 解析顺序不一致导致的,在 alpine 中,linux 系统默认跳过 hosts 配置,直接使用机器的 DNS 服务.因此,有如下三种解决方法. 方法一.增加配置 修改

  • golang中实现graphql请求的方法

    目录 前言 安装gqlgen 初始化项目 编写schema 生成代码 编写resolver 运行GraphQL服务 安装Apollo客户端 创建Apollo客户端 执行GraphQL请求 结论 前言 GraphQL是一种新的API设计语言,它提供了更加灵活.高效的API查询方式.与RESTful API相比,GraphQL可以更好地满足前端工程师的需求,使得API的开发更加便捷.gqlgen是一款用于Golang语言开发的GraphQL库,它可以帮助您更快地构建高质量的GraphQL服务.在本文

  • 初步解读Golang中的接口相关编写方法

    概述 如果说goroutine和channel是Go并发的两大基石,那么接口是Go语言编程中数据类型的关键.在Go语言的实际编程中,几乎所有的数据结构都围绕接口展开,接口是Go语言中所有数据结构的核心. Go语言中的接口是一些方法的集合(method set),它指定了对象的行为:如果它(任何数据类型)可以做这些事情,那么它就可以在这里使用. 接口的定义和使用 比如 复制代码 代码如下: type I interface{     Get() int     Put(int)   } 这段话就定

  • Golang中数据结构Queue的实现方法详解

    前言 本文主要给大家介绍了关于Golang中数据结构Queue实现的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 需求 队列的特性较为单一,基本操作即初始化.获取大小.添加元素.移除元素等.最重要的特性就是满足先进先出. 实现 接下来还是按照以前的套路,一步一步来分析如何利用Go的语法特性实现Queue这种数据结构. 定义 首先定义每个节点Node结构体,照例Value的值类型可以是任意类型,节点的前后指针域指针类型为node type node struct {

  • Golang 中整数转字符串的方法

    整形转字符串经常会用到,本文讨论一下 Golang 提供的这几种方法.基于 go1.10.1 fmt.Sprintf fmt 包应该是最常见的了,从刚开始学习 Golang 就接触到了,写 'hello, world' 就得用它.它还支持格式化变量转为字符串. func Sprintf(format string, a ...interface{}) string Sprintf formats according to a format specifier and returns the re

随机推荐