2019独角兽企业重金招聘Python工程师标准>>>

介绍

不论是开发Java还是你正在学习的Golang,都会遇到依赖管理问题。Java有牛逼轰轰的Maven和Gradle。 Golang亦有godep、govendor、glide、gvt、gopack等等,本文主要给大家介绍gilde。 glide是Golang的包管理工具,是为了解决Golang依赖问题的。 为什么需要glide? 原因很简单,Go 语言原生包管理的缺陷。罗列一下golang的 get 子命令管理依赖有很多大缺陷:

  • 能拉取源码的平台很有限,绝大多数依赖的是 github.com
  • 不能区分版本,以至于令开发者以最后一项包名作为版本划分
  • 依赖 列表/关系 无法持久化到本地,需要找出所有依赖包然后一个个 go get
  • 只能依赖本地全局仓库(GOPATH/GOROOT),无法将库放置于局部仓库($PROJECT_HOME/vendor)

安装

Golang环境设置

采用vendor目录特性,Go 1.5 做为试验特性加入(需要指定 GO15VENDOREXPERIMENT=1 环境变量),并在 Go 1.6 正式引入的一个概念。多数 go 依赖解决方案都基于它的。GO15VENDOREXPERIMENT 是 Go 1.5 版本新增的一个环境变量,如果将值改为 1 则表示启用。它可以将项目根目录名为 vendor 的目录添加到 Go 的库搜寻路径中,实现一个局部依赖的效果。
特性在 1.5 版本作为实验特性被添加,1.6 中默认被启用,1.7 移除变量加入标准中。
Go 提供了原始的 go get ,让第三方包管理可以基于 go get 做扩展。GO15VENDOREXPERIMENT 特性让局部依赖成为现实。Go 官方在给第三方包管理营造条件以及引导开发者用户至所推荐的方向,促进社区的繁荣。证明了一个语言技术的生态不仅仅只能靠官方或者取决于官方的完善程度。

//设置环境变量 使用vendor目录
GO15VENDOREXPERIMENT=1

为什么要选择glide? Glide 是众多实现 GO15VENDOREXPERIMENT 特性的包管理工具之一,但它是本文最为推荐的,具体为什么推荐它,原因很简单,因为它目前最受关注。 几大主要功能:

  • 持久化依赖列表至配置文件中,包括依赖版本(支持范围限定)以及私人仓库等
  • 持久化关系树至 lock 文件中(类似于 yarn 和 cargo),以重复拉取相同版本依赖
  • 兼容 go get 所支持的版本控制系统:Git, Bzr, HG, and SVN
  • 支持 GO15VENDOREXPERIMENT 特性,使得不同项目可以依赖相同项目的不同版本
  • 可以导入其他工具配置,例如: Godep, GPM, Gom, and GB

在这里给大家介绍glide的中文文档,感谢 @岁月无痕 翻译。

安装glide

$ go get github.com/Masterminds/glide
$ go install github.com/Masterminds/glide

验证

$ glide
NAME:glide - Vendor Package Management for your Go projects.Each project should have a 'glide.yaml' file in the project directory. Fileslook something like this:package: github.com/Masterminds/glideimports:- package: github.com/Masterminds/cookooversion: 1.1.0- package: github.com/kylelemons/go-gypsysubpackages:- yamlFor more details on the 'glide.yaml' files see the documentation athttps://glide.sh/docs/glide.yamlUSAGE:glide [global options] command [command options] [arguments...]VERSION:0.13.0-devCOMMANDS:create, init       Initialize a new project, creating a glide.yaml fileconfig-wizard, cw  Wizard that makes optional suggestions to improve config in a glide.yaml file.get                Install one or more packages into `vendor/` and add dependency to glide.yaml.remove, rm         Remove a package from the glide.yaml file, and regenerate the lock file.import             Import files from other dependency management systems.name               Print the name of this project.novendor, nv       List all non-vendor paths in a directory.rebuild            Rebuild ('go build') the dependenciesinstall, i         Install a project's dependenciesupdate, up         Update a project's dependenciestree               (Deprecated) Tree prints the dependencies of this project as a tree.list               List prints all dependencies that the present code references.info               Info prints information about this projectcache-clear, cc    Clears the Glide cache.about              Learn about Glidemirror             Manage mirrorshelp, h            Shows a list of commands or help for one commandGLOBAL OPTIONS:--yaml value, -y value  Set a YAML configuration file. (default: "glide.yaml")--quiet, -q             Quiet (no info or debug messages)--debug                 Print debug verbose informational messages--home value            The location of Glide files (default: "/home/users/qiangmzsx/.glide") [$GLIDE_HOME]--tmp value             The temp directory to use. Defaults to systems temp [$GLIDE_TMP]--no-color              Turn off colored output for log messages--help, -h              show help--version, -v           print the version

看到这样,那就恭喜你,已经安装成功了!!!

使用

篇幅有限,我只介绍经常使用到的。 先进入在GOPATH的一个项目中。

cd $GOPATH/src/foor

初始化 (glide init)

$ glide init
[INFO]  Generating a YAML configuration file and guessing the dependencies
[INFO]  Attempting to import from other package managers (use --skip-import to skip)
[INFO]  Scanning code to look for dependencies
[INFO]  --> Found reference to github.com/urfave/cli
[INFO]  Writing configuration file (glide.yaml)
[INFO]  Would you like Glide to help you find ways to improve your glide.yaml configuration?
[INFO]  If you want to revisit this step you can use the config-wizard command at any time.
[INFO]  Yes (Y) or No (N)?
Y
[INFO]  Loading mirrors from mirrors.yaml file
[INFO]  Looking for dependencies to make suggestions on
[INFO]  --> Scanning for dependencies not using version ranges
[INFO]  --> Scanning for dependencies using commit ids
[INFO]  Gathering information on each dependency
[INFO]  --> This may take a moment. Especially on a codebase with many dependencies
[INFO]  --> Gathering release information for dependencies
[INFO]  --> Looking for dependency imports where versions are commit ids
[INFO]  Here are some suggestions...
[INFO]  The package github.com/urfave/cli appears to have Semantic Version releases (http://semver.org).
[INFO]  The latest release is v1.19.1. You are currently not using a release. Would you like
[INFO]  to use this release? Yes (Y) or No (N)
Y
[INFO]  Would you like to remember the previous decision and apply it to future
[INFO]  dependencies? Yes (Y) or No (N)
Y
[INFO]  Updating github.com/urfave/cli to use the release v1.19.1 instead of no release
[INFO]  The package github.com/urfave/cli appears to use semantic versions (http://semver.org).
[INFO]  Would you like to track the latest minor or patch releases (major.minor.patch)?
[INFO]  Tracking minor version releases would use '>= 1.19.1, < 2.0.0' ('^1.19.1'). Tracking patch version
[INFO]  releases would use '>= 1.19.1, < 1.20.0' ('~1.19.1'). For more information on Glide versions
[INFO]  and ranges see https://glide.sh/docs/versions
[INFO]  Minor (M), Patch (P), or Skip Ranges (S)?
P
[INFO]  Would you like to remember the previous decision and apply it to future
[INFO]  dependencies? Yes (Y) or No (N)
Y
[INFO]  Updating github.com/urfave/cli to use the range ~1.19.1 instead of commit id v1.19.1
[INFO]  Configuration changes have been made. Would you like to write these
[INFO]  changes to your configuration file? Yes (Y) or No (N)
Y
[INFO]  Writing updates to configuration file (glide.yaml)
[INFO]  You can now edit the glide.yaml file.:
[INFO]  --> For more information on versions and ranges see https://glide.sh/docs/versions/
[INFO]  --> For details on additional metadata see https://glide.sh/docs/glide.yaml/
$ ll
glide.yaml
$ cat glide.yaml
package: foor
import: []

在初始化过程中, glide 会询问一些问题。 glide.yaml记载了依赖包的列表及其更新规则,每次执行 glide up 时,都会按照指定的规则(如只下载补丁(patch)不下载升级(minor))下载新版。

一个完整的gilde.yaml

package: foor
homepage: https://github.com/qiangmzsx
license: MIT
owners:
- name: qiangmzsxemail: qiangmzsx@hotmail.comhomepage: https://github.com/qiangmzsx
# 去除包
ignore:
- appengine
- golang.org/x/net
# 排除目录
excludeDirs:
- node_modules
# 导入包
import:
- package: github.com/astaxie/beegoversion: 1.8.0
- package: github.com/coocood/freecache
- package: github.com/garyburd/redigo/redis
- package: github.com/go-sql-driver/mysql
- package: github.com/bitly/go-simplejson
- package: git.oschina.net/qiangmzsx/beegofreecache
testImport:
- package: github.com/smartystreets/goconveysubpackages:- convey

很多人看着yaml很不习惯,没事,我转一下json给大家看看。

{"excludeDirs": ["node_modules"], "owners": [{"homepage": "https://github.com/qiangmzsx", "name": "qiangmzsx", "email": "qiangmzsx@hotmail.com"}], "license": "MIT", "package": "foor", "ignore": ["appengine", "golang.org/x/net"], "import": [{"version": "1.8.0", "package": "github.com/astaxie/beego"}, {"package": "github.com/coocood/freecache"}, {"package": "github.com/garyburd/redigo/redis"}, {"package": "github.com/go-sql-driver/mysql"}, {"package": "github.com/bitly/go-simplejson"}, {"package": "git.oschina.net/qiangmzsx/beegofreecache"}], "testImport": [{"subpackages": ["convey"], "package": "github.com/smartystreets/goconvey"}], "homepage": "https://github.com/qiangmzsx"
}

版本号指定规则

=: equal (aliased to no operator)
!=: not equal
>: greater than
<: less than
>=: greater than or equal to
<=: less than or equal to1.2 - 1.4.5 which is equivalent to >= 1.2, <= 1.4.5
2.3.4 - 4.5 which is equivalent to >= 2.3.4, <= 4.5
1.2.x is equivalent to >= 1.2.0, < 1.3.0>= 1.2.x is equivalent to >= 1.2.0
<= 2.x is equivalent to < 3
* is equivalent to >= 0.0.0~1.2.3 is equivalent to >= 1.2.3, < 1.3.0
~1 is equivalent to >= 1, < 2
~2.3 is equivalent to >= 2.3, < 2.4
~1.2.x is equivalent to >= 1.2.0, < 1.3.0
~1.x is equivalent to >= 1, < 2^1.2.3 is equivalent to >= 1.2.3, < 2.0.0
^1.2.x is equivalent to >= 1.2.0, < 2.0.0
^2.3 is equivalent to >= 2.3, < 3
^2.x is equivalent to >= 2.0.0, < 3

''指定版本报错,需要用''指定的可以不填写

安装依赖 (glide install)

glide.yaml我们已经准备好了,现在就改安装一下试试。

$ glide install
[ERROR] Failed to parse /home/users/xxxx/golang/src/foor/glide.yaml: yaml: invalid leading UTF-8 octet

报错了!别担心看看你的yaml文件是否为utf-8编码,不是就转换一下就好啦!

$ glide install
[INFO]  Lock file (glide.lock) does not exist. Performing update.
[INFO]  Downloading dependencies. Please wait...
[INFO]  --> Fetching updates for github.com/go-sql-driver/mysql
[INFO]  --> Fetching updates for github.com/astaxie/beego
[INFO]  --> Fetching updates for github.com/coocood/freecache
[INFO]  --> Fetching updates for git.oschina.net/qiangmzsx/beegofreecache
[INFO]  --> Fetching updates for github.com/bitly/go-simplejson
[INFO]  --> Fetching updates for github.com/garyburd/redigo
[INFO]  --> Fetching updates for github.com/smartystreets/goconvey
[INFO]  --> Detected semantic version. Setting version for github.com/astaxie/beego to v1.8.0
[INFO]  Resolving imports
[INFO]  Downloading dependencies. Please wait...
[INFO]  Setting references for remaining imports
[INFO]  Exporting resolved dependencies...
[INFO]  --> Exporting github.com/astaxie/beego
[INFO]  --> Exporting github.com/coocood/freecache
[INFO]  --> Exporting github.com/bitly/go-simplejson
[INFO]  --> Exporting github.com/go-sql-driver/mysql
[INFO]  --> Exporting github.com/garyburd/redigo
[INFO]  --> Exporting github.com/smartystreets/goconvey
[INFO]  --> Exporting git.oschina.net/qiangmzsx/beegofreecache
[INFO]  Replacing existing vendor dependencies
[INFO]  Project relies on 6 dependencies.
$ ll
total 12
glide.lock
glide.yaml
vendor
$ ll vendor/
git.oschina.net
github.com

看到glide.lock了吗,这个文件记载了依赖包确定的revision, 下次再执行 glide install 时,会直接读这个文件下载确定的版本。

升级版本 (glide up)

glide up 会按照语义化版本规则更新依赖包代码,开发过程中如果需要使用新版代码,可以执行这个命令: 修改一下glide.yaml中的一个Package.

- package: github.com/astaxie/beegoversion: 1.8.3

执行glide up。

$ glide up
[INFO]  Downloading dependencies. Please wait...
[INFO]  --> Fetching updates for git.oschina.net/qiangmzsx/beegofreecache
[INFO]  --> Fetching updates for github.com/garyburd/redigo
[INFO]  --> Fetching updates for github.com/go-sql-driver/mysql
[INFO]  --> Fetching updates for github.com/astaxie/beego
[INFO]  --> Fetching updates for github.com/bitly/go-simplejson
[INFO]  --> Fetching updates for github.com/coocood/freecache
[INFO]  --> Fetching updates for github.com/smartystreets/goconvey
[INFO]  --> Detected semantic version. Setting version for github.com/astaxie/beego to v1.8.3
[INFO]  Resolving imports
[INFO]  Downloading dependencies. Please wait...
[INFO]  Setting references for remaining imports
[INFO]  Exporting resolved dependencies...
[INFO]  --> Exporting github.com/astaxie/beego
[INFO]  --> Exporting github.com/bitly/go-simplejson
[INFO]  --> Exporting github.com/garyburd/redigo
[INFO]  --> Exporting github.com/go-sql-driver/mysql
[INFO]  --> Exporting github.com/coocood/freecache
[INFO]  --> Exporting github.com/smartystreets/goconvey
[INFO]  --> Exporting git.oschina.net/qiangmzsx/beegofreecache
[INFO]  Replacing existing vendor dependencies
[INFO]  Project relies on 6 dependencies.

添加并下载依赖 (glide get)

除了自动从代码中解析 import 外,glide 还可以通过 glide get 直接下载代码中没有的依赖,与 go get 的用法基本一致:

$ glide get github.com/orcaman/concurrent-map
[INFO]  Preparing to install 1 package.
[INFO]  Attempting to get package github.com/orcaman/concurrent-map
[INFO]  --> Gathering release information for github.com/orcaman/concurrent-map
[INFO]  --> Adding github.com/orcaman/concurrent-map to your configuration
[INFO]  Downloading dependencies. Please wait...
[INFO]  --> Fetching updates for github.com/garyburd/redigo
[INFO]  --> Fetching updates for github.com/astaxie/beego
[INFO]  --> Fetching updates for github.com/go-sql-driver/mysql
[INFO]  --> Fetching updates for git.oschina.net/qiangmzsx/beegofreecache
[INFO]  --> Fetching updates for github.com/bitly/go-simplejson
[INFO]  --> Fetching github.com/orcaman/concurrent-map
[INFO]  --> Fetching updates for github.com/coocood/freecache
[INFO]  --> Fetching updates for github.com/smartystreets/goconvey
[INFO]  Resolving imports
[INFO]  Downloading dependencies. Please wait...
[INFO]  --> Detected semantic version. Setting version for github.com/astaxie/beego to v1.8.3
[INFO]  Exporting resolved dependencies...
[INFO]  --> Exporting github.com/smartystreets/goconvey
[INFO]  --> Exporting github.com/garyburd/redigo
[INFO]  --> Exporting github.com/go-sql-driver/mysql
[INFO]  --> Exporting github.com/orcaman/concurrent-map
[INFO]  --> Exporting github.com/astaxie/beego
[INFO]  --> Exporting github.com/bitly/go-simplejson
[INFO]  --> Exporting github.com/coocood/freecache
[INFO]  --> Exporting git.oschina.net/qiangmzsx/beegofreecache
[INFO]  Replacing existing vendor dependencies

使用镜像 (glide mirror)

[WARN]  Unable to checkout golang.org/x/crypto
[ERROR] Update failed for golang.org/x/crypto: Cannot detect VCS
[ERROR] Failed to do initial checkout of config: Cannot detect VCS

这几行信息估计很多人都是遇到过的。在我天朝或者在公司内部都可能不能访问一些站点,导致很Golang的依赖包不能通过go get下载。此时也就是glide大发神威的时候到了,可以通过配置将墙了的版本库 URL 映射到没被墙的 URL,甚至也可以映射到本地版本库。 将golang.org映射到github: 修改glide.yaml加入

- package: golang.org/x/crypto

如果你的网络可以访问就不需要使用glide镜像功能,可以跳过。

$ glide mirror set golang.org/x/crypto github.com/golang/crypto
[INFO]  golang.org/x/crypto being set to github.com/golang/crypto
[INFO]  mirrors.yaml written with changes
$ glide up
[INFO]  Loading mirrors from mirrors.yaml file
[INFO]  Downloading dependencies. Please wait...
[INFO]  --> Fetching updates for github.com/orcaman/concurrent-map
[INFO]  --> Fetching golang.org/x/crypto
[INFO]  --> Fetching updates for github.com/astaxie/beego
[INFO]  --> Fetching updates for github.com/go-sql-driver/mysql
[INFO]  --> Fetching updates for github.com/garyburd/redigo
[INFO]  --> Fetching updates for github.com/coocood/freecache
[INFO]  --> Fetching updates for github.com/bitly/go-simplejson
[INFO]  --> Fetching updates for git.oschina.net/qiangmzsx/beegofreecache
[INFO]  --> Fetching updates for github.com/smartystreets/goconvey
[INFO]  --> Detected semantic version. Setting version for github.com/astaxie/beego to v1.8.3
[INFO]  Resolving imports
[INFO]  Downloading dependencies. Please wait...
[INFO]  Setting references for remaining imports
[INFO]  Exporting resolved dependencies...
[INFO]  --> Exporting github.com/astaxie/beego
[INFO]  --> Exporting github.com/coocood/freecache
[INFO]  --> Exporting github.com/smartystreets/goconvey
[INFO]  --> Exporting github.com/garyburd/redigo
[INFO]  --> Exporting github.com/go-sql-driver/mysql
[INFO]  --> Exporting github.com/bitly/go-simplejson
[INFO]  --> Exporting github.com/orcaman/concurrent-map
[INFO]  --> Exporting golang.org/x/crypto
[INFO]  --> Exporting git.oschina.net/qiangmzsx/beegofreecache
[INFO]  Replacing existing vendor dependencies
[INFO]  Project relies on 8 dependencies.
$ ll vendor/
git.oschina.net
github.com
golang.org

终于看到golang.org啦!!! 细心的你一定已经发现了

[INFO]  mirrors.yaml written with changes

说明执行glide mirror时候镜像配置写入到的是$HOME/.glide/mirrors.yaml中,打开看看。

repos:
- original: golang.org/x/cryptorepo: github.com/golang/crypto

还可以映射到本地目录。 推荐大家可以去https://www.golangtc.com/download/package下载很多Golang类库。 现在我去下载了:https://www.golangtc.com/static/download/packages/golang.org.x.text.tar.gz,解压到本地目录/home/users/qiangmzsx/var/golang/golang.org/x/text

$ glide mirror set golang.org/x/text /home/users/qiangmzsx/var/golang/golang.org/x/text
[INFO]  golang.org/x/text being set to /home/users/qiangmzsx/var/golang/golang.org/x/text
[INFO]  mirrors.yaml written with changes
$ glide up
[INFO]  Loading mirrors from mirrors.yaml file
[INFO]  Downloading dependencies. Please wait...
[INFO]  --> Fetching golang.org/x/text
[INFO]  --> Fetching updates for github.com/garyburd/redigo
[INFO]  --> Fetching updates for git.oschina.net/qiangmzsx/beegofreecache
[INFO]  --> Fetching updates for github.com/astaxie/beego
[INFO]  --> Fetching updates for github.com/bitly/go-simplejson
[INFO]  --> Fetching updates for github.com/go-sql-driver/mysql
[INFO]  --> Fetching updates for github.com/coocood/freecache
[INFO]  --> Fetching updates for github.com/orcaman/concurrent-map
[INFO]  --> Fetching updates for golang.org/x/crypto
[INFO]  --> Fetching updates for github.com/smartystreets/goconvey
[INFO]  --> Detected semantic version. Setting version for github.com/astaxie/beego to v1.8.3
[INFO]  Resolving imports
[INFO]  Downloading dependencies. Please wait...
[INFO]  Setting references for remaining imports
[INFO]  Exporting resolved dependencies...
[INFO]  --> Exporting github.com/astaxie/beego
[INFO]  --> Exporting github.com/go-sql-driver/mysql
[INFO]  --> Exporting github.com/bitly/go-simplejson
[INFO]  --> Exporting github.com/coocood/freecache
[INFO]  --> Exporting github.com/smartystreets/goconvey
[INFO]  --> Exporting github.com/garyburd/redigo
[INFO]  --> Exporting github.com/orcaman/concurrent-map
[INFO]  --> Exporting golang.org/x/text
[INFO]  --> Exporting golang.org/x/crypto
[INFO]  --> Exporting git.oschina.net/qiangmzsx/beegofreecache
[INFO]  Replacing existing vendor dependencies
[INFO]  Project relies on 9 dependencies.

全局选项

运行glide,在最后就可以看到

GLOBAL OPTIONS:--yaml value, -y value  Set a YAML configuration file. (default: "glide.yaml")--quiet, -q             Quiet (no info or debug messages)--debug                 Print debug verbose informational messages--home value            The location of Glide files (default: "/home/users/qiangmzsx/.glide") [$GLIDE_HOME]--tmp value             The temp directory to use. Defaults to systems temp [$GLIDE_TMP]--no-color              Turn off colored output for log messages--help, -h              show help--version, -v           print the version

如果大家想把glide的yaml文件换别的默认名称可以执行

 $ glide -y qiangmzsx.yaml

在官网中会看到一个GLIDE_HOME变量,该变量就是/home/users/qiangmzsx/.glide。 这个目录之前有提到过,除了包含有mirrors.yaml还有一个很重要的目录cache本地 cache,每次更新代码时, glide 都会在本地保存 cache,以备下次 glide install 使用 。

GLIDE_HOME可以通过如下命令修改。

 $ glide  --home /home/glide

总结

除了上述说到的功能,glide还有很多好的功能,后续有机会在写出来吧。
总结一下,glide是一款功能丰富,完全满足需求的依赖管理工具,强烈大家使用。

转载于:https://my.oschina.net/qiangmzsx/blog/1475626

Golang依赖管理工具:glide从入门到精通使用相关推荐

  1. Golang 依赖包管理工具---glide

    安装glide $ go get github.com/Masterminds/glide $ go install github.com/Masterminds/glide 验证 $ glide N ...

  2. golang 官方依赖管理工具 dep 使用和持续集成

    介绍 go dep 依赖管理工具是为应用管理代码的,go get是为GOPATH管理代码的 官方地址 官方说明为啥要统一依赖管理 dep 需要在Go 1.7及更高的版本中使用 安装 本文使用 gola ...

  3. Golang包管理工具之govendor的使用

    本文个人博客地址为:http://www.huweihuang.com/article/golang/govendor-usage/ 本文个人博客地址为:https://huweihuang.net/ ...

  4. Golang包管理工具(三)之dep的使用

    本文个人博客地址:http://www.huweihuang.com/article/golang/dep-usage/ 更多golang包管理工具参考 - dep的使用 - glide的使用 - g ...

  5. go之官方依赖管理工具dep安装和使用

    前言 大家都知道go没有一个自己的包管理平台.社区里go的第三方包托管在各个git托管平台.需要用到包时通过go get 命令工具安装,但这个工具没有版本描述性文件,在go的世界里没有"pa ...

  6. golang 依赖管理_简介:如何管理Golang项目依赖项

    golang 依赖管理 by Ying Kit Yuen 英杰苑 简介:如何管理Golang项目依赖项 (An intro to dep: How to manage your Golang proj ...

  7. go build不从本地gopath获取_跟我一起学习go语言,包依赖管理工具go mod

    Go Module是Go会在1.12中正式推出的包管理机制. Go mod 简介 Golang一直存在一个被人诟病的问题是缺少一个官方的包依赖管理工具.从我个人的角度上来看存在两个问题: GOPATH ...

  8. linux go vendor目录,Go 包依赖管理工具 —— govendor

    govendor 是一个基于 vendor 机制实现的 Go 包依赖管理命令行工具.与原生 vendor 无侵入性融合,也支持从其他依赖管理工具迁移,可以很方便的实现同一个包在不同项目中不同版本.以及 ...

  9. GoLand2021使用包依赖管理工具 Go Modules

    GoLand2021使用包依赖管理工具 文章目录 GoLand2021使用包依赖管理工具 前言 一.创建空项目 二.配置项目的GOPATH 1.设置GOPATH目录 三.使用 Go Modules 1 ...

最新文章

  1. 常用的shell脚本
  2. 谨防电子邮件泄露数据
  3. IE内置的WebBrowser控件之--WEB打印
  4. mysql 技能进阶_mysql的高级进阶(一)
  5. not null primary key什么意思_explain都不会用,你还好意思说精通Mysql查询优化?
  6. 面试官系统精讲Java源码及大厂真题 - 44 场景实战:ThreadLocal 在上下文传值场景下的实践
  7. 从16位到32位再到64位,为何16年过去,依然没有128位系统出现?
  8. nodejs下载 安装 配置环境
  9. html 倒计时弹出框,alert警告框倒计时
  10. 打开QQ音乐检测不到声卡
  11. 测试用例管理工具有哪些?
  12. 计算机为啥启用不了网络发现,Windows7系统无法启用网络发现怎么解决?
  13. win7 去除快捷方式小箭头
  14. 最值得用的五款 chrome 插件 Vimium momentum The Great Suspender等 附下载地址。
  15. 两岸开源社群面面观(总结篇)
  16. gre计算机考试科目,gre的考试内容和科目
  17. 微信小游戏 - 小游戏 vs H5 游戏性能对比和分析
  18. 1012: 8除不尽的数
  19. LeetCode 玩筹码
  20. 37互娱笔试智力题--猜帽子问题分析

热门文章

  1. 前传:03.意外的荧光
  2. Object.keys(obj)的用法
  3. TypeError: object.__new__() takes exactly one argument (the type to instantiate)
  4. linux sftp上传速度慢,华三S5500V2-34S-EI交换机关于SFTP传输慢的问题
  5. 北航计算机组成原理课程设计-2020秋 PreProject-Verilog HDL与ISE-Verilog工程的设计开发调试
  6. 用Shell实现俄罗斯方块代码(Tetris.sh)
  7. 不成问题的问题:一个英伟达与另一个英伟达
  8. 不要千辛万苦,最后把孩子养成“白眼狼”
  9. 思维导图PPT七步制作法
  10. 学奥数还是计算机,编程和奥数有关系吗?学编程要先学奥数吗