正在或即将被使用的Go依赖包管理方法:Go Modules,Go 1.13的标准特性

本文介绍了Go Modules作为Go 1.13的默认依赖管理方法,包括初始化、依赖包导入、版本管理、IDE集成等方面,帮助开发者理解如何有效地管理和使用Go Modules。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

公众号原文地址:https://mp.weixin.qq.com/s/SGGV3tWEg5AAJ7I_FcK0cg

目录

  • 目录

  • 说明

  • 初始化

  • 依赖包的默认导入

  • 依赖包的特定版本导入

  • 查看已添加依赖

  • 依赖包的存放管理

  • 依赖包的版本切换

  • 删除未使用依赖包

  • 引用项目中的 package

  • 引用不同版本的父子目录

  • 实例演示

  • 需要注意的坑

  • IDE 与 Go Modules

  • IntelliJ IDEA/Goland

  • vim

  • 参考

说明

Go 的依赖包管理一直是个问题,先后出现了 godep、glide、dep 等一系列工具,vendor 机制使依赖包的管理方便了很多,但依然没有统一的管理工具,不同的项目各用各的方法。

另外使用 vendor 后,每个项目都完整拷贝一份依赖包,既不方便管理又浪费了本地空间。

此外,Go 项目中的 import 指令后面的 package 路径与项目代码的存放路径相关,项目目录不能随意移动,必须安分守己地趴在 $GOPATH/src 中,否则 import 会找不到项目中的 package,虽然可以通过在容器中编译或者为每个项目准备一套 Go 环境的方式解决,但是麻烦且有额外开销。

Go1.11 和 Go1.12 引入的 Go Modules 机制,提供了统一的依赖包管理工具 go mod,依赖包统一收集在 $GOPATH/pkg/mod 中进行集中管理,并且将 import 路径与项目代码的实际存放路径解耦,使 package 定义导入更加灵活。

Go Modules 将成为 Go1.13 默认的依赖包管理方法,在 Go1.11 和 Go1.12 中, Go Modules 只能在 $GOPATH 外部使用,Using Go Modules 中有详细介绍。

很多开源项目已经改用 Go Modules 了,浏览代码的时候会发现,很多项目的 master 分支中增加了 go.mod 和 go.sum 文件。

Go Modules 的主要功能就四个:添加依赖、更新依赖、删除依赖,以及多版本依赖。

初始化

Go Modules 的初始化命令为 go mod init <ROOTPATH>,ROOTPATH 是项目的 import 路径。

在 $GOPATH 外部创建一个目录,然后初始化,项目的路径设置为 exampe.com/hello

$ mkdir go-modules-example$ cd go-modules-example$ go mod init example.com/hello        # 该项目代码的引用路径是 example.com/hellogo: creating new go.mod: module example.com/hello

引用该项目中的 package 时使用前缀 example.com/hello

项目下生成一个 go.mod 文件,里面记录了 module 路径和 go 的版本,刚创建时这个文件中没有依赖信息:

$ cat go.modmodule example.com/hellogo 1.12

对于 Go1.11 和 Go1.12,如果在 $GOPATH 中执行 go mod 会遇到下面的错误:

$ go mod init example.com/hellogo: modules disabled inside GOPATH/src by GO111MODULE=auto; see 'go help modules'

依赖包的默认导入

在 go-modules-example 中创建一个 main.go,简单写几行代码,引入 “github.com/lijiaocn/golib/version”:

// Create: 2019/05/05 16:53:00 Change: 2019/05/05 16:56:53// FileName: main.go// Copyright (C) 2019 lijiaocn <lijiaocn@foxmail.com>//// Distributed under terms of the GPL license.package mainimport (    "github.com/lijiaocn/golib/versio
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值