什么是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)

}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

dep指定版本 go_Go语言包管理工具dep的安装与使用相关推荐

  1. 小白都能看懂的go语言包管理工具DEP详解

    简介 众所周知GO语言包管理工具百花齐放,前有godep.glide.govendor,后有dep. 今天我们来了解一下"dep",看看它是怎样实现包管理的. dep安装 二进制文 ...

  2. Python包管理工具Distribute的安装

    Python包管理工具Distribute的安装 Python的包管理工具常见的有easy_install, setuptools, 还有pip, distribute,那麽这几个工具有什么关系呢,看 ...

  3. dep指定版本 go_Go 包管理工具-dep

    dep 是一个 golang 依赖管理工具,需要在 Go 1.7 及更高的版本中使用. 1. 安装 安装 dep 工具的方式有很多种,如果是 mac 电脑的话,只需要如下命令: brew instal ...

  4. dep指定版本 go_Go依赖管理工具 - dep

    Go依赖管理工具 Go dependency management tool 环境要求 Golang >= 1.9 Dep 目前版本: dep: version : devel build da ...

  5. Helm包管理工具(简介、安装、方法)

    认识Helm 每次我们要部署一个应用都需要写一个配置清单(维护一套yaml文件),但是每个环境又不一样.部署一套新的环境成本是真的很高.如果我们能够使用类似于yum的工具来安装我们的应用的话那就太好了 ...

  6. Win10下媲美apt的包管理工具 Scoop 的安装以及常用软件清单

    本文首发于我的个人博客网站:https://www.xerrors.fun/scoop-list/ 欢迎访问 想必使用过 MacOS 或者 Linux 的小伙伴一定会对 windows 下面的软件配置 ...

  7. python扩展包安装_Python包管理工具Distribute的安装

    Python的包管理工具常见的有easy_install, setuptools, 还有pip, distribute,那麽这几个工具有什么关系呢,看一下下面这个图就明白了: 可以看到distribu ...

  8. dep指定版本 go_Go 1.12 版本的新特性

    Go 1.12 昨天,Go 官方发布 1.12 版本.本文介绍下 Go 1.12 版本变更的内容. Go 1.12 正式版发布了,距离上个正式发布版 Go 1.11 已经过去半年.跟往常一样,Go 1 ...

  9. Nodejs入门 (四) 包管理工具(npm、cnpm、yarn、nvm)

    目录 一.什么是包管理工具? 二.npm的使用 1.初始化 2.搜索包 3.下载安装包 4.安装包的使用 5.全局安装 6.安装包依赖 7.安装指定版本的包 8.删除依赖 9.配置命令别名 10.np ...

  10. linuxpip安装python包_Windows+Linux安装Python包管理工具pip

    Windows+Linux安装Python包管理工具pip Windows安装Python包管理工具pip pip是一个Python包管理工具,主要是用于安装PyPI上的软件包,可以替代easy_in ...

最新文章

  1. iOS逆向(4)-代码注入,非越狱窃取微信密码
  2. “跟着菜鸟一起学R语言” 现已更名为“数据志”
  3. 30可以刷什么系统_刷脸支付系统可以对接原来的收银系统吗?
  4. 谈谈这些年前端的变化
  5. 超燃!奇安信首度对外公开内部网络攻防演习纪实片
  6. margin负值的巧妙运用(HTML、CSS)
  7. 如何在 Ubuntu Linux 中打开终端(小白教程)
  8. 将字符串转换为数组_LeetCode108-将有序数组转换为二叉搜索树
  9. 九江学院计算机考研,2017年江西财经大学与九江学院联合培养考研招生事宜的通知...
  10. 国家统计局:政府统计应用大数据的主要障碍
  11. 二元线性回归最小二乘法公式推导
  12. 用Python算出你的名字,比老僧算的更快!
  13. Echarts制作泊松分布图,并加临界线
  14. 3d打印机c语言程序下载,芯烨打印机设置软件工具
  15. webrtc rtt 计算
  16. 基于Jenkins和Kubernetes流水线实现应用的自动发版
  17. 相机去畸变软件OCamCalib的使用方法
  18. 为micropython添加模块(2)-类模块
  19. Android 调用谷歌语音识别
  20. 第 3-5 课:Flutter 调试及 Android 和 iOS 打包

热门文章

  1. stap监控cpu脚本小结
  2. 地理入门-经纬度时区速成总结篇(转)
  3. 你离技术大牛就只差这10个优质公众号!
  4. 「双拼输入法安利」清欢实践了四个月,真的好用!
  5. 数据结构:图(Graph)【详解】
  6. C++课程设计--人民币大小写转换器(MFC)
  7. 数学 计算机类论文题目,数学计算机论文题目范文 数学计算机论文标题如何定...
  8. 第03章-二进制、八进制、十进制、十六进制之间的转换-深博-专题视频课程
  9. 在VMware下新建虚拟机Win10系统
  10. 毕业论文 | 文献综述应该怎么写