go语言中的go mod 和包管理工具

在Golang1.11版本之前如果我们要自定义包的化必须把项目放在gopath目录。Go1.11版本之后无需手动配置环境变量,使用go mod管理项目,也不需要非得把项目放到GoPath指定目录下,你可以在任意磁盘位置。go1.13版本之后不需要GOPATH

1. go mod init 初始化项目

实际项目开发中我们首先要在我们项目中用 go mod 命令生成一个 go.mod 文件管理我们项目的依赖。

比如我们的golang项目文件要放在 study文件加下,这个时候我们需要在这个文件夹下使用go mod 命令生成一个go.mod文件

go mod init study

2.Golang 中自定义包

包(package)是多个Go源码的集合,一个包可以简单理解为一个存放多个.go文件得到文件夹。该文件夹下面的所有的go文件都要在代码的第一行添加如下代码,声明该文件归属的包。

package 包名

1. 一个文件夹下面直接包含的文件只能归属一个package,同样一个package的文件不能在多个文件夹下。

2. 包名可以不和文件夹的名字一样,包名不能包含 - 符号。

3. 报名为main的包为应用程序入口包。这种包编译后会得到一个可执行文件,而编译不包含main包的源代码则不会得到可执行文件。

3.导入包后自定义引用的包名

如果我们想同同时导入两个有着名字相同的包。  那么可以导入包重命名,导入包的重命名之影响当前的源文件。其他源文件如果导入相同的包,可以用导入包原本默认的名字或另起一个不一样的名字。

导入包重命名,可以解决名字冲突,也可以为了简洁方便使用,另外也可以解决与变量名冲突。

import (

    "hello/word"
    tu "tuiu/word"
)

4.Golang中的init函数

在go语言程序执行时导入包会自动触发包内部init()函数的调用。需要注意的是:init()函数没有参数也没有返回值。init()函数在程序运行时自动被调用执行,不能在代码中主动调用它。

在包初始化执行的调用顺序是:全局声明 -> init() -> main()

go语言会从main包开始检查其导入所有的包,每个包中都可能导入其他的包。Go编译器由此构建出一个树状的包引用关系,在根据引用顺序决定编译顺序,依次编译这些包的代码。

在运行时,被最后导入的包会最先初始化并调用其init函数:

main -> import ->A -> import -> B -> import -> C

main.init() <-  A.init() <- B.init() <- C.init()

5.匿名导入包----只导入包但不使用包内类型和数值

import (
    _ "path/package"
)

这种写法是希望导入包,但是不使用包内的任何结构,不使用包内任何函数。

匿名导入的包与其他方式导入的包一样 会让导入包编译到可执行文件中,同时,导入包会触发init()函数调用。

6.Golang中使用第三方包

可以在https://pkg.go.dev/查找常见的golang第三方数据包

1.下载安装第三方包

下载方法

第一种方法:(全局)

        go get 包名称(github.com/shopspring/.decimal)  

网络问题,成功概率不高

第二种方法:

        go mod download 

依赖包会自动下载到$GOPATH/pack/mod ,多个项目可以共享缓存的mod

第三种方法:

        go mod vendor 将依赖复制到当前项目的vendor下

go mod 命令解释

1.go mod  download  下载依赖的module到本地的缓存

2.go mod  edit   编译go mod 文件

3.go mod graph  打印模块依赖图

4.go mod init 在当前文件加下初始化一个新的module,创建go.mod 文件

5.go mod tidy 增加丢失的module,去掉未用的module

6.go mod vendor 将依赖复制到vendor下

7.go mod verify  校验以来,检查下载的第三方库有没有本地修改,如果有修改返回非0,否则验证成功

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悟道xn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值