go path ,go vendor,go mode 模式区别和发展
前言:
包是多个 Go 源码的集合,是一种高级的代码复用方案。
Go语言中为我们提供了很多内置包,如 fmt、os、io,strconv,strings 等
Go 语言的入口 main() 函数所在的包(package)叫 main。
main 包想要引用别的代码,必须同样以包的方式进行引用。
go path 模式,
go vendor模式
go mod 模式
正文:
包的类型包括三种
系统内置包: fmt ,strings..
自定义包:开发者自己写的包
第三方包:其他开发者写的包,并开源大家使用
GOPATH:
GOPATH 是 Go语言中使用的一个环境变量,它使用绝对路径提供项目的工作目录。
Go语言所依赖的所有的第三方库都放在 GOPATH 这个目录下面,
这就导致了同一个库只能保存一个版本的代码
查看GOPATH目录:
go env
Go Path代码组织形式:
bin:存放编译后生成的二进制可执行文件
pkg:存放编译后生成的文件
src:存放项目的源代码,可以是你自己写的代码,也可以是你 go get 下载的包
将你的包或者别人的包全部放在 $GOPATH/src 目录下进行管理的方式,我们称之为 GOPATH 模式。
go vendor 模式的过渡
为了解决 GOPATH 方案下不同项目下无法使用多个版本库的问题,
Go v1.5 开始支持 vendor 。
Go Mod 模式
go module 是Go语言从 1.11 版本之后官方推出的版本管理工具,
并且从 Go1.13 版本开始,go module 成为了Go语言默认的依赖管理工具。
不需要配置 GOPATH 代码可以放到任意目录
1.16 默认开启GO111MODULE 官方推荐使用
自定义包 package:
开发者自己写的包。
go语言通过首字母的大小写来控制访问权限。
无论是方法,变量,常量或是自定义的变量类型,结构体中的字段名,
如果首字母大写,则可以被外部包访问,反之则不可以。
Go Mod 开启:
打开Go Mod 方式如下:
1.16 默认开启GO111MODULE 官方推荐使用
Windows 下开启 GO111MODULE 的命令为:
set GO111MODULE=on 或者 set GO111MODULE=auto
MacOS 或者 Linux 下开启 GO111MODULE 的命令为:
export GO111MODULE=on 或者 export GO111MODULE=auto
go mod 相关命令:
go.mod 提供了 module、require、replace 和 exclude 四个命令:
module 语句指定包的名字(路径);
require 语句指定的依赖项模块;
replace 语句可以替换依赖项模块;
exclude 语句可以忽略依赖项模块。
go mod命令
go mod vendor 生成vendor,并将依赖的包放到vendor目录下
go get package_name //获取相关依赖
go mod tidy //增加缺少的包,删除无用的包
引入包方式:
import “fmt” //引入单独的包
import ( //引入多个包
"fmt"
"learn/pay"
)
第三方包的使用:
第三方包仓库
https://pkg.go.dev/
由于国内下载包的速度很慢,需要先设置国内代理
设置环境变量 GOPROXY
Windows 下设置 GOPROXY 的命令为:
go env -w GOPROXY=https://goproxy.cn,direct
MacOS 或 Linux 下设置 GOPROXY 的命令为:
export GOPROXY=https://goproxy.cn
使用第三方包:需要使用以下命令
go get package_name
但行好事,莫问前程!
本文来自博客园,作者:yangphp,转载请注明原文链接:https://www.cnblogs.com/ypeih/p/17284722.html