关于go.mod

go.mod是Go项目的依赖描述文件,该文件主要用来描述两个事情:

  1. 当前项目名(module)是什么。每个项目都应该设置一个名称,当前项目中的包(package)可以使用该名称进行相互调用。
  2. 当前项目依赖的第三方包名称。项目运行时会自动分析项目中的代码依赖,生成go.sum依赖分析结果,随后go编译器会去下载这些第三方包,然后再编译运行。

我们将之前的hello world项目做一些改变,增加一个go.mod文件(也可以在项目根目录下使用 go mod init 项目名称命令初始化项目生成该文件),内容如下:

其中,my-hello为当前项目的名称,可以随意设置。

就这样简单便完成了项目的module初始化。

一般情况下,go.sum依赖分析文件应当被添加到版本管理中随着go.mod文件一起提交。

使用go.mod

使用go.mod意即用go.mod进行项目依赖管理。我们有两种go.mod使用方式IDE-vgo命令行方式。以下我们通过下载使用框架来演示如何使用这两种方式来管理依赖。

vgo是基于Go Module规范的包管理工具,同官方的go mod命令工具类似。

  1. 设置Goland启用vgo

    其中Proxy请输入代理地址下载依赖包,如果选择direct表示不使用代理。可选择的反向代理地址有:

    • https://goproxy.cn
    • https://goproxy.io
    • https://mirrors.aliyun.com/goproxy/

    详见Go官网说明:https://github.com/golang/go/wiki/Modules#are-there-always-on-module-repositories-and-enterprise-proxies

    这里请务必选择一个代理地址输入。

  2. 手动修改go.mod文件如下:

    ``` module my-hello

  1. ```
  2. 增加`GoFrame`框架的依赖,其中`latest`表示使用最新版本,IDE将会立即去更新下载框架代码。成功后,IDE将会修改`go.mod`文件并生成`go.sum`依赖分析文件。
  3. ![](/projects/goframe-2.2-zh/eaa5b7c648fb7ca071454d24fd9f1c6b.png)
  1. 随后go.mod文件被自动更新为:

    ``` module my-hello

  1. 如果下载最新代码框架后出现下图情况:

    Go Module - 图2

  2. 请按快捷键 ⌥(option)+↩(return) 或者 鼠标右键, 选择

  3. 随后等待几秒钟之后, 可以看到左侧的Go Module已经有内容,并且中终端自动输出了下载的框架版本

使用命令行

  1. 打开Terminal,在项目根目录下执行:

    1. export GO111MODULE=on GOPROXY=https://goproxy.cn; go get -u github.com/gogf/gf

    该命令将会立即下载最新稳定版本的GoFrame框架。其中 export GO111MODULE=on; 表示开启Go Module特性(Go 1.11.x版本默认关闭,需要手动开启),export GOPROXY=https://goproxy.cn 表示使用代理下载,原因你懂的,并且也能极大提高依赖包下载速度。代理地址也可使用:

    • https://goproxy.io
    • https://mirrors.aliyun.com/goproxy

    Go Module - 图5

  2. 随后go.mod文件内容被自动更新为:

    ``` module my-hello

使用GoFrame

我们将之前的hello.go修改如下:

  1. package main
  2. import (
  3. "fmt"
  4. "github.com/gogf/gf"
  5. )
  6. func main() {
  7. }

运行结果如下:

恭喜,你已经学会了特性的基本使用啦!