本文内容纲要:

- GOPATH

- 临时GOPATH

- 依赖查找路径

- GOVENDER

- GO MODULE

- go module 解决的问题

- Usage

- 使用示例

- 开启GO111MODULE

- go mod cache

- 语义版本

- go mod的版本选择

- 示例

- 大版本升级导致包导入格式的变化

- 升级依赖项

- Go 国内加速镜像

- 使用方法

目录

  • GOPATH

    • 临时GOPATH
    • 依赖查找路径
  • GOVENDER

  • GO MODULE

    • go module 解决的问题

    • Usage

      • 常用命令列表
      • 不常用命令
    • 使用示例

    • 开启GO111MODULE

      • 使用过程
    • go mod cache

  • 语义版本

  • go mod的版本选择

    • 示例
  • 大版本升级导致包导入格式的变化

  • 升级依赖项

  • Go 国内加速镜像

    • 使用方法

GOPATH

GOPATH
~/go

临时GOPATH

export GOPATH=/path/to/dir
export GO111MODULE=off
src/path/to/dir/src

依赖查找路径

  1. GOROOT
  2. GOPATH

GOVENDER

venderGOPATHGOROOT

依赖查找路径

vendervender

GO MODULE

go 1.8 加入 go mod 作为依赖管理。

特点: 依赖由go命令统一管理,开发者不用关心目录结构。

go module 解决的问题

  • go代码能否脱离GOPATH运行
  • 能否处理版本依赖并选择最兼容的依赖版本
  • 能否使用go工具本地管理依赖项并自定义依赖项版本

Usage

常用命令列表

go mod initgo mod init github.com/wjp2013/hellogo build, go testgo getgo list -m allgo mod tidy

不常用命令

go mod downloadgo mod editgo mod graphgo mod vendorgo mod verifygo mod why

使用示例

开启GO111MODULE

Go Modules 是否启用目前由环境变量 GO111MODULE 控制。

export GO111MODULE=off
go env -w GO111MODULE=on

使用过程

go mod init test.comtest.comgo mod tidygo build, go testgo list -m allgo get xxx/xxxgo test

go mod cache

// 导入buffalo
import "github.com/gobuffalo/buffalo"
// 缓存实际位置
// ==> $GOPATH/src/github.com/gobuffalo/buffalo

语义版本

v主版本号.次版本号.修订版本号
v

go mod的版本选择

最低版本选择 选择项目中最合适的最低版本

示例

A -> D v1.0.1
               ==> D v1.0.2
B -> D v1.0.2

项目依赖模块A、B,模块A依赖模块D_v1.0.1,模块B依赖模块D_v1.0.2;根据最小版本规则,则选择最终D的版本为v1.0.2;

此时,如果删除模块B,则不再依赖Dv1.0.2,但v1.0.2 不会降级到v1.0.1;因为此时的A在Dv1.0.2下可以运行。

大版本升级导致包导入格式的变化

当大版本升级时,包的导入需要带上版本号,原因是大版本升级了,API不兼容,因此修改导入的格式也就比较正常了。

// 版本升级到 v2.3.4

// old
import "github.com/PoplarYang/golib"
// 升级后
import "github.com/PoplarYang/golib/v2"

升级依赖项

>$ go list -m -versions github.com/gin-gonic/gin
// 将会列出 Gin 版本历史
github.com/gin-gonic/gin v1.1.1 v1.1.2 v1.1.3 v1.1.4 v1.3.0

将版本更新到上个版本,这里只是个演示。

>$ go get github.com/gin-gonic/gin@v1.1.4 // 只需要在依赖后面加上 @version 就可以了
>$ go list -m all
// 看到了版本变化
github.com/gin-gonic/gin v1.1.4
go mod
>$ go mod edit -require="github.com/gin-gonic/gin@v1.1.4" // 修改 go.mod 文件
>$ go mod tidy //下载更新依赖
go.modgo mod tidy
// go.mod 方式
require github.com/gobuffalo/buffalo latest    --> 最新版
require github.com/gobuffalo/buffalo version   --> 指定版本
require github.com/gobuffalo/buffalo commit_id --> 指定commit_id

Go 国内加速镜像

国内网络访问国外资源经常会出现不稳定的情况。因此设置 CDN 加速代理就很有必要了,以下是几个速度不错的提供者:

使用方法

# 启用 Go Modules 功能
go env -w GO111MODULE=on

# 配置 GOPROXY 环境变量
go env -w  GOPROXY=xxxx

本文内容总结:GOPATH,临时GOPATH,依赖查找路径,GOVENDER,GO MODULE,go module 解决的问题,Usage,使用示例,开启GO111MODULE,go mod cache,语义版本,go mod的版本选择,示例,大版本升级导致包导入格式的变化,升级依赖项,Go 国内加速镜像,使用方法,

原文链接:https://www.cnblogs.com/hiyang/p/12695155.html