什么是dep?
dep和go,在一定程度上相当于maven之于Java,composer之于PHP,dep是go语言官方的一个包管理工具。
相比较go get而言,dep可以直接给引入的第三方包一个专门的目录,并且可以专门制定一个配置文件,控制go项目所引入的包,版本以及其他依赖关系。
dep这个项目放在golang官方的github中:https://github.com/golang/dep
官方对于dep的解释是:dep is the official experiment, but not yet the official tool. 也就是说,dep目前还处于试验阶段,还并没有成为一个官方意义上的工具。毕竟go语言还很年轻,但是这也充分的证明了go语言的生态圈十分丰富。
安装
安装dep工具的方式有很多种,如果是mac电脑的话,只需要如下命令:
brew install dep
对于Linux和类Unix系统而言,我们还可以使用如下方式安装dep:
curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh
或者直接使用源码安装。
而对于windows电脑,可能会相对来说麻烦些,我们可以直接使用源码编译安装或者直接使用go get命令安装:
go get -u github.com/golang/dep/cmd/dep
待安装完成之后,将dep.exe放在环境变量就可以使用了。
使用
接下来我们来看一下dep的使用方式。
当安装好dep之后,我们在命令行中,输入dep就可以看到有关dep的命令了。
Dep is a tool for managing dependencies for Go projects Usage: "dep [command]" Commands: init Set up a new Go project, or migrate an existing one status Report the status of the project's dependencies ensure Ensure a dependency is safely vendored in the project version Show the dep version information Examples: dep init set up a new project dep ensure install the project's dependencies dep ensure -update update the locked versions of all dependencies dep ensure -add github.com/pkg/errors add a dependency to the project Use "dep help [command]" for more information about a command.
我们可以看出来,dep一般进场会使用3个命令:
init-用来初始化项目
status-用来查看当前项目的依赖包的状态
ensure-用来同步包的配置文件和引入的包
下面我们正式使用dep来创建一个项目。首先建立一个项目路径,这里我们将项目路径叫做depProject。然后在项目路径中建立src源代码目录。在src中建立一个存放dep文件和项目主文件的目录,我们暂且可以叫做depmain,并建立一个go文件。
这样我们的目录结构如下:
depProject
|----src
|----depmain
|-----main.go
建立好之后,我们在main.go中写一个简单的go程序:
package main import ( "fmt" ) func main() { fmt.Println("hello) }
之后我们在这个目录下运行如下命令:
dep init
运行完成之后,dep就会为我们自动生成如下文件和目录:
有点像常规go项目的样子了,不过需要注意的是pkg中存放的go语言引入包的缓存文件,vendor中存放的是真正的引入的包内容。接下来是两个文件,Gopkg.lock和Gopkg.toml。Gopkg.lock文件是自动生成的,而Gopkg.toml文件是我们可以编辑的文件,通过编辑这个文件,并运行dep的命令可以达到引入包的目的:
# 必需包 required = ["github.com/gin-gonic/gin"] # 忽略包 #ignored = []没有可以不写 # 项目元数据 #[metadata] # 约束条件 [[constraint]] # name = # 可选:版本 # version = # 分支 # branch # 修订 # revision # 可选:指定来源 # source = "github.com/gin-gonic/gin"
以上代码是一个示例,我们写好之后运行
dep ensure
就可以了,我们会看到vendor下多了一些有关此包的依赖和引入。
我们引入了gin框架的包,所以我们现在就可以使用gin框架了,写的时候,和我们平时的go语言项目一样:
package main import "github.com/gin-gonic/gin" func main() { r := gin.Default() r.GET("/ping", func(c *gin.Context) { c.JSON(200, gin.H{ "message": "pong", }) }) r.Run() // listen and serve on 0.0.0.0:8080 }
这样做完全没有问题,我们只用考虑这个包原本的路径github.com/gin-gonic/gin就好。
接下来我们就可以编译运行这个项目了。
另外需要注意的是,使用dep管理包控制依赖的时候,如果我们需要新建目录,并编写自己的新的包名的时候,只需要在src下新建目录就可以了。这样做才能正确引入。
比如:我们要编写一个add的函数,我们可以这样,在src下简历一个utils目录,下写个add.go文件:
package utils func Add(a int, b int) int { return a+b }
这样在主程序中,这样写就可以import自己写的包,并使用自己的函数了:
package main import ( "utils" "fmt" ) func main() { fmt.Println("hello") utils.Add(1, 1) }
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
更新日志
- 黄乙玲1988-无稳定的爱心肝乱糟糟[日本东芝1M版][WAV+CUE]
- 群星《我们的歌第六季 第3期》[320K/MP3][70.68MB]
- 群星《我们的歌第六季 第3期》[FLAC/分轨][369.48MB]
- 群星《燃!沙排少女 影视原声带》[320K/MP3][175.61MB]
- 乱斗海盗瞎6胜卡组推荐一览 深暗领域乱斗海盗瞎卡组分享
- 炉石传说乱斗6胜卡组分享一览 深暗领域乱斗6胜卡组代码推荐
- 炉石传说乱斗本周卡组合集 乱斗模式卡组最新推荐
- 佟妍.2015-七窍玲珑心【万马旦】【WAV+CUE】
- 叶振棠陈晓慧.1986-龙的心·俘虏你(2006复黑限量版)【永恒】【WAV+CUE】
- 陈慧琳.1998-爱我不爱(国)【福茂】【WAV+CUE】
- 咪咕快游豪礼放送,百元京东卡、海量欢乐豆就在咪咕咪粉节!
- 双11百吋大屏焕新“热”,海信AI画质电视成最大赢家
- 海信电视E8N Ultra:真正的百吋,不止是大!
- 曾庆瑜1990-曾庆瑜历年精选[派森][WAV+CUE]
- 叶玉卿1999-深情之选[飞图][WAV+CUE]