Go语言中文手册 · 依赖管理

admin 2024-08-15 16:37:27 编程 来源:ZONE.CI 全球网 0 阅读模式

1. 依赖管理

1.1.1. 为什么需要依赖管理

  • 最早的时候,Go所依赖的所有的第三方库都放在GOPATH这个目录下面。这就导致了同一个库只能保存一个版本的代码。如果不同的项目依赖同一个第三方的库的不同版本,应该怎么解决?

1.1.2. go module

go module是Go1.11版本之后官方推出的版本管理工具,并且从Go1.13版本开始,go module将是Go语言默认的依赖管理工具。

1.1.3. GO111MODULE

要启用go module支持首先要设置环境变量GO111MODULE,通过它可以开启或关闭模块支持,它有三个可选值:off、on、auto,默认值是auto。

  • GO111MODULE=off禁用模块支持,编译时会从GOPATH和vendor文件夹中查找包。

  • GO111MODULE=on启用模块支持,编译时会忽略GOPATH和vendor文件夹,只根据 go.mod下载依赖。

  • GO111MODULE=auto,当项目在$GOPATH/src外且项目根目录有go.mod文件时,开启模块支持。

简单来说,设置GO111MODULE=on之后就可以使用go module了,以后就没有必要在GOPATH中创建项目了,并且还能够很好的管理项目依赖的第三方包信息。

使用 go module 管理依赖后会在项目根目录下生成两个文件go.mod和go.sum。

1.1.4. GOPROXY

Go1.11之后设置GOPROXY命令为:

    export GOPROXY=https://goproxy.cn

Go1.13之后GOPROXY默认值为 https://proxy.golang.org ,在国内是无法访问的,所以十分建议大家设置GOPROXY,这里我推荐使用goproxy.cn。

    go env -w GOPROXY=https://goproxy.cn,direct

1.1.5. go mod命令

常用的go mod命令如下:

    go mod download    下载依赖的module到本地cache(默认为$GOPATH/pkg/mod目录)
    go mod edit        编辑go.mod文件
    go mod graph       打印模块依赖图
    go mod init        初始化当前文件夹, 创建go.mod文件
    go mod tidy        增加缺少的module,删除无用的module
    go mod vendor      将依赖复制到vendor下
    go mod verify      校验依赖
    go mod why         解释为什么需要依赖

1.1.6. go get

在项目中执行go get命令可以下载依赖包,并且还可以指定下载的版本。

  • 运行go get -u将会升级到最新的次要版本或者修订版本(x.y.z, z是修订版本号, y是次要版本号)
  • 运行go get -u=patch将会升级到最新的修订版本
  • 运行go get package@version将会升级到指定的版本号version 如果下载所有依赖可以使用go mod download命令。

1.1.7. 简单粗暴的使用go module

1.set GO111MODULE=on

2.SET GOPROXY=https://goproxy.cn (这是win环境下的) export GOPROXY=https://goproxy.cn (这是mac环境下的)

3.go mod init [包名] // 初始化项目(如果你是初始化项目直接 go mod init 就好了)

4.在你的目录文件下会生成go.mod和go.sum文件 go.mod 里面包含了你的所有的包!

5.在文件里面引入包名的时候有的编辑器会报错但是是可以正常编译的

6.下载包使用go get

7.修改包的版本号直接去go.mod文件修改然后go mod download

TypeScript学习笔记 编程

TypeScript学习笔记

TypeScript学习笔记[TOC]TypeScript概述TypeScript是微软开发的一个开源的编程语言,通过在JavaScript的基础上添加静态类型
高德地图JSAPI学习笔记 编程

高德地图JSAPI学习笔记

[toc]概述地图 JS API 2.0 是高德开放平台免费提供的第四代 Web 地图渲染引擎, 以 WebGL 为主要绘图手段,本着“更轻、更快、更易用”的服
golangTCPpush 编程

golangTCPpush

在当今互联网时代,即时通讯成为了人们生活中不可或缺的一部分。而实现即时通讯的关键技术之一就是TCP Push。作为一名专业的golang开发者,我们不仅需要掌握
nodegolang性能对比 编程

nodegolang性能对比

在当前的编程世界中,Node.js和Golang是两种备受瞩目的技术。它们都拥有出色的性能和能力,但在某些方面却存在差异。本文将对Node.js和Golang进
评论:0   参与:  46