简述电子商务网站开发的基本流程,建设教育网站怎么样,网页制作基础教程胡崧免费下载,wordpress如何cdn加速GoLang 中常用的包管理的方式
1 #xff09;概述
常用的有三种 Go PathGo VendorGo Modules
2 #xff09;发展历程
早期go的包管理存在很大缺陷#xff0c;甚至可以说没有官方统一的包管理工具 一方面官方在努力发布一些实验性的包管理工具。同时也出现了很多社区开发…GoLang 中常用的包管理的方式
1 概述
常用的有三种 Go PathGo VendorGo Modules
2 发展历程
早期go的包管理存在很大缺陷甚至可以说没有官方统一的包管理工具 一方面官方在努力发布一些实验性的包管理工具。同时也出现了很多社区开发的包管理工具。在官方和社区的包管理工具中仅官方推荐的就达15种之多。 比如go path, godep,glide, go vendor等等。 虽然在前期 Go包管理工具处于百家争鸣之态, 但是主流的go的包管理我们只需要记住下面这三种主要的 第一个是 Go Path (从go诞生的时候就支持)第二个是 Go Vendor (从 go 1.5 版本开始)第三个是 Go Modules (从 go 1.11 才开始支持)
关于 Go Path
1 ) 概述
我们先来看看go语言刚发布阶段是怎么去做包管理的在go语言的发布阶段主要是通过 Go Path 模式来进行包管理Go Path 是最早的依赖包管理方式。从 2009.11.10 随着第一个发布的第一个开源版本就有了Go Path本质上它不算是go的包管理工具它只是提供了一个存放包的路径的一个环境变量Go Path 模式有一个很大的缺陷就是它不支持依赖包的版本控制因为 Go Path 模式下同一个包, 它的导入路径是一样的这样也就不支持依赖包的不同版本
2 ) Go Path模式 和 Go Path路径的区别
需要注意的是Go Path模式 和 Go Path路径是两个不同的概念 Go Path模式: 是指我们通过 Go Path, 来管理我们的包Go Path路径, 指的是 Go Path 这个环境变量的路径 不管我们使用哪种包管理方式都可以有 Go Path 路径, 其包管理方式 可能依赖 Go Path 路径来实现也可能不需要 Go Path 路径 并不是设置 Go Path 路径就一定使用了 Go Path 模式来管理我们的依赖包这一点是我们需要注意的
3 ) Go Root 和 Go Path的区别
Go Root 是go的安装目录存放的是go语言内置的开发包和工具类就类似Java的JDKGo Path是go语言指定的工作空间用于存放go工程代码和第三方依赖包当然如果我们使用 Go Modules 管理我们的工程代码也没有必要一定要放在Go Path下 需要注意的是Go Path 目录和 Go Root 目录不能是同一个目录这样就会很容易导致项目中的包和标准库重名而造成编译出现问题 Go Path 是有默认值的那在Go的1.8版本之前Go Path 的环境变量默认是空的 那从1.8版本开始呢go开发包在安装完成之后就会给 Go Path 一个默认的目录 在Windows目录下它的默认目录就是这个 %USERPROFILE%/go 例如: c:\users\用户名\go 在Unix类型的操作系统下面那它是在home目录下面的go目录当中 例如: /home/用户名/go 我们可以通过 go env 指令来查看这两个环境变量的具体路径 Windows 上执行这个 go env 这个命令Linux环境比如 redhat 先查看操作系统的版本 cat /etc/redhat-release我们再执行 go env | grep PATH
4 ) Go Pass是怎么配置的
在linux环境当中如果我们希望不同的用户具有不同的 Go Pass我们可以将 Go Pass 设置到这个 ~/.bash_profile 这个文件里面 只会对当前登录的这个用户生效。比如当前登录的用户是张三那这种配置呢比较适合使用linux操作系统的开发者环境使用 在线上部署的时候我们可以设置到 /etc/profile 这个文件里面 这个文件中的设置, 是对全部用户都是有效的同时, 我们又可以将 GOBIN 这个环境变量加入到 PATH 变量中可以在这个 etc/profile 这个文件末尾, 增加这三个go的环境变量 举例~ export GOPATH $HOME/mygopath$export GOBIN $GOPATH/bin$export PATH $PATH:$GOBIN$ 追加导出 当我们开启了Go Path模式, 我们的工程代码就必须放在 Go Path 下面的 src 这个目录下面 即: $GOPATH/src 当我们用到一些第三方依赖包的时候, 就需要通过 go get 命令去拉取