Go-包管理(管理工具对比及go mod的使用)

目录

go path

go vendor

go mod

配置

GO111MODULE介绍

命令

使用

项目目录

代码

运行截图

参考


go path

  1. 代码开发必须在go path的src目录下
  2. 手动管理依赖
  3. 依赖包没有版本

全是缺点,在本地可以凑合用用

go vendor

  1. 解决了包依赖,一个配置文件即可管理
  2. 依赖包全都下载到项目vendor下,每个项目都有一份

大型项目也不行,冗余太多

go mod

  • 一个包可以由多个文件组成
  • 同一包内不需要导入

配置

Go-包管理(管理工具对比及go mod的使用)_第1张图片

Go-包管理(管理工具对比及go mod的使用)_第2张图片

GO111MODULE介绍

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

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

当前目录在GOPATH/src之外且该目录包含go.mod文件
当前文件在包含go.mod文件的目录下面

命令

go mod
命令 说明
download 下载依赖包
edit 编辑go.mod
graph 打印模块依赖图
init 初始化一个新模块到当前目录
verify 在当前目录初始化mod
tidy 拉取缺少的模块,移除不用的模块
vendor 将依赖复制到vendor下
verify 验证依赖是否正确
why 解释为什么需要依赖

使用命令

根目录下生成go.mod文件

go mod init "包名"

使用

GoLand

Go-包管理(管理工具对比及go mod的使用)_第3张图片

项目目录

Go-包管理(管理工具对比及go mod的使用)_第4张图片

  • add.go中有可导出的函数Add
  • plus.go中使用add.go中的函数Add,来展示同一包内不需要导入
  • sub.go中使用plus.go中的Plus函数,来展示不同包下如何导入
  • Cal.go是入口文件,package后必须是main,同时含有main方法,导入了包plus和sub

代码

add.go

package plus

func Add(a,b int)int{
	return a+b
}

plus.go

package plus

func Plus(a,b int)int{
	return Add(a,b)
}

相同包直接使用

sub.go

package sub

import "modUse/plus"

func Sub(a,b,c int) int{
	return plus.Plus(a,b) - c
}

不同包需要导入

Cal.go

package main

import (
	"fmt"
	"modUse/plus"
	"modUse/sub"
)

func main()  {
	a := 10
	b := 20
	fmt.Println(plus.Plus(a,b))
	fmt.Println(sub.Sub(a,b,5))
}

main包中导入。使用go mod不用建立main目录,写上package main即可。

运行截图

编译后运行即可,go run 也行。

Go-包管理(管理工具对比及go mod的使用)_第5张图片

更多Go相关内容:Go-Golang学习总结笔记

有问题请下方评论,转载请注明出处,并附有原文链接,谢谢!如有侵权,请及时联系。如果您感觉有所收获,自愿打赏,可选择支付宝18833895206(小于),您的支持是我不断更新的动力。

你可能感兴趣的:(Go,go,包管理,go,mod)