Versions Compared
Key
- This line was added.
- This line was removed.
- Formatting was changed.
Go Module
Go Module
是从Go版本1.11.1
开始官方提供的包管理工具,用于解决Go项目的包管理及依赖,类似于PHP的composer
、Nodejs的npm
。本章节会对Go Module
的一些常用的实用的命令/设置进行介绍,更详细的介绍请查看官方文档:https://github.com/golang/go/wiki/Modules
关于go关于go.mod
go.mod
是Go项目的依赖描述文件,该文件主要用来描述两个事情: 1.
- 当前项目名(
module
)是什么。每个项目都应该设置一个名称,当前项目中的包(package
)可以使用该名称进行相互调用。
- 当前项目依赖的第三方包名称。项目运行时会自动分析项目中的代码依赖,生成
go.sum
依赖分析结果,随后go编译器会去下载这些第三方包,然后再编译运行。
我们将之前的hello world
项目做一些改变,增加一个go.mod
文件(也可以在项目根目录下使用 go mod init 项目名称
命令初始化项目生成该文件),内容如下:
Code Block | ||
---|---|---|
| ||
module my-hello |
其中,my-hello
为当前项目的名称,可以随意设置。
就这样简单便完成了项目的module
初始化。就这样简单便完成了项目的module初始化。
Note |
---|
一般情况下, |
使用go使用go.mod
使用go.mod
意即用go.mod
进行项目依赖管理。我们有两种go.mod
的使用方式:IDE-vgo
和命令行
方式。以下我们通过下载使用GoFrame
框架来演示如何使用这两种方式来管理依赖。
如果需要
Goland
IDE支持go.mod
,必须要打开vgo
的支持(包括代码依赖检测)。这两种使用方式的区别仅仅是下载依赖包的方式不同。
使用Goland IDE vgo(推荐)
vgo
是基于Go Module
规范的包管理工具,同官方的go mod
命令工具类似。
设置Goland启用设置
Goland
启用vgo
Image Removed
Image Added
Note 如果您本地环境已经有
VPN
功能,那么可以忽略proxy
的设置。其中
Proxy
请输入代理地址下载依赖包,如果选择direct
表示不使用代理。可选择的反向代理地址有:https://goproxy.cn
https://goproxy.io
https://mirrors.aliyun.com/goproxy/
这里请务必选择一个代理地址输入。
手动修改
go.mod
文件如下:Code Block language xml module my-hello require github.com/gogf/gf latest
增加
GoFrame
框架的依赖,其中latest
表示使用最新版本,IDE将会立即去更新下载框架代码。成功后,IDE将会修改go.mod
文件并生成go.sum
依赖分析文件。Image Removed
Image Added
随后
go.mod
文件被自动更新为:Code Block language xml module my-hello require github.com/gogf/gf v1.6.13
其中
v1.6.13
表示vgo检测到的最新框架版本。如果下载最新代码框架后出现下图情况:https://www.jetbrains.com/help/go/create-a-project-with-vgo-integration.html
Image Removed
Image Added
请按快捷键
⌥(option)+↩(return)
或者 鼠标右键, 选择Sync packages of my-hello
Image Removed
Image Added
随后等待几秒钟之后, 可以看到左侧的
Go Module
已经有内容,并且中终端自动输出了下载的框架版本Image Removed
Image Added
使用命令行
打开
Terminal
,在项目根目录下执行:Code Block language xml export GO111MODULE=on GOPROXY=https://goproxy.cn; go get -u github.com/gogf/gf
该命令将会立即下载最新的该命令将会立即下载最新稳定版本的
GoFrame
框架。其中export GO111MODULE=on;
表示开启Go Module
特性(Go1.11.x
版本默认关闭,需要手动开启),export GOPROXY=https://goproxy.cn
表示使用代理下载,原因你懂的,并且也能极大提高依赖包下载速度。代理地址也可使用:https://goproxy.cn
https://goproxy.io
https://mirrors.aliyun.com/goproxy
Image Removed
Image Added
随后
go.mod
文件内容被自动更新为:Code Block language xml module my-hello require github.com/gogf/gf v1.6.13 // indirect
且生成了新的
go.sum
依赖分析文件,该文件充其量算是一个临时文件,对于我们平时开发工作来说意义不大。
使用GoFrame
我们将之前的hello.go
修改如下:
Code Block | ||
---|---|---|
| ||
package main
import (
"fmt"
"github.com/gogf/gf"
)
func main() {
fmt.Println("hello GF", gf.VERSION)
} |
运行结果如下:
Image Removed
Image Added
可以看到,GoFrame
框架已被自动下载成功,并在编译中被正常引入了。
恭喜,你已经学会了Go Module
特性的基本使用了。特性的基本使用啦!
Panel | ||
---|---|---|
| ||
|