代码管理--GO语言

一、Go的安装

该教程针对windows环境,linux和mac环境请自行举一反三
自行到go官网下载msi安装器

default ${GOROOT} C:\Program Files\go
default ${GOPATH}  ~\go

二、目录说明

${GOROOT}可以理解为sdk根目录,所有的标准库都在${GOPATH}\src目录下。
${GOPATH}有两种使用方式,一种式作为project目录,第二种式作为lib目录。

三、go项目的模块管理

从go1.11开始,go新增加了一种模块管理方案–GOMOD方案,原来的经典方案为GOPATH方案。其中一个核心文件就是go.mod文件,这个文件其实就是一个项目依赖管理文件,还有一个go.sum文件。如果你有过npm,composer开发经验,那么你可以类比为{“package.json”,“package-lock.json”}或者{“composer.json”,“composer-lock.json”}

如果你开始使用go编程,那么你第一件事情就是要决定你所使用的模块管理模式,是GOPATH模式还是GOMOD模式。

四、包和模块

4.1什么是包
go的代码管理是基于目录的,因此一个目录就是一个包。如果你所在的目录为one,那么所有在这个目录下的所有源文件的所属包为one.包下可以有多个源文件,源文件的名字没有限制,对于编程人员来说,可以将源文件名字作为包下的分类器,例如{“data.go”,“struct.go”,“interface.go”,“code.go”};而包名为聚类器,所有包下具有相同包名的源文件内的成员同属于一个包。

问题1:如果我在one包下定义一个源文件c.go,但是我打的包为package two,是否可以?

这是不可以的,如果你自己试过,你会发现,goland会提示你在one目录下建立一个two目录。

4.2什么是模块
模块是包集合的索引,如果你用过go,你肯定知道${GOPATH}\src目录,这个目录下的所有目录都是模块,但是模块目录下的目录不是模块,如果你把模块目录下的目录移到模块目录下,它就变成了模块。这是由go的模块加载决定的。(我想你是知道它基于路径的加载机制的)。所有我们定义可以由go直接加载的根目录下的目录即为模块。

五、GOPATH模式

GOPATH模块管理会自动加载 ${GOROOT}\src和 ${GOPATH}\src目录下的模块
设置go env 中的字段GO111MODULE=off

go get ${github}/ ${person或者organization}/ ${repository}
这样就可以将github上的共享代码安装到你的项目目录下的src目录下了。现在第三方模块,本地模块,主模块都在 ${GOPATH}\src目录下

六、GOMOD模式

GOMOD模块管理会自动加载 ${GOROOT}\src和 ${GOPATH}\pkg\mod目录下的模块
设置go env 中的字段GO111MODULE=on,如果使用goland开发,请到file->setting->module中勾选mod模式

由于模块指向改变到了mod目录下,所以你在模块根目录下必须放置一个go.mod文件,里面的字段module就是你的包名。当然现在你是否将主模块放置到src下都是可以的,但是为了管理项目,不建议将模块保存到其他的位置。你在开发的过程中,引用主模块下的包时候,你可以直接通过你的module字段来索引,哪怕它不是在mod目录下

go mod download 命令可以将mod文件中定义的模块下载下来

七、如何制作共享包

共享包的制作非常简单,实际就是一个git仓库,它会按照 github/author/repository-name的目录组织到你的模块目录中。这样实际上它都帮你做命名空间了,不用担心你的包和别人重名了。gopath模式没有版本管理,所以直接下载就可以,但是mod模式有版本管理,所以你在制作包的时候需要打上vx.x.x这样的版本标签,在go.mod中require中定义 hostname/author/repository v1.0.0(github.com/xxx/xxx v1.0.0)这样去定义,然后用go mod download去安装。当然go mod还有其他的管理命令,自行去了解。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值