golang 环境配置

1、安装Go 1.13或升级到Go 1.13
 

2、配置环境变量

#修改 GOBIN 路径(可选)
go env -w GOBIN=$HOME/bin
#打开 Go modules
go env -w GO111MODULE=on
#设置 GOPROXY
go env -w GOPROXY=https://goproxy.cn,direct

GO111MODULE:

这个环境变量主要是 Go modules 的开关,主要有以下参数:

auto:只在项目包含了 go.mod 文件时启用 Go modules,在 Go 1.13 中仍然是默认值,详见:golang.org/issue/31857
on:无脑启用 Go modules,推荐设置,未来版本中的默认值,让 GOPATH 从此成为历史。
off:禁用 Go modules。


GOPROXY:

这个环境变量主要是用于设置 Go 模块代理,它的值是一个以英文逗号 “,” 分割的 Go module proxy 列表,默认是proxy.golang.org,国内访问不了。这里要感谢盛傲飞和七牛云为中国乃至全世界的 Go 语言开发者提供免费、可靠的、持续在线的且经过CDN加速Go module proxy(goproxy.cn)。

其实值列表中的 “direct” 为特殊指示符,用于指示 Go 回源到模块版本的源地址去抓取(比如 GitHub 等),当值列表中上一个 Go module proxy 返回 404 或 410 错误时,Go 自动尝试列表中的下一个,遇见 “direct” 时回源,遇见 EOF 时终止并抛出类似 “invalid version: unknown revision…” 的错误。
 

3、创建你的项目

这里我们在$GOPATH/src外,创建 /var/www/demo实例

mkdir /var/www/demo
cd  /var/www/demo

新建main.go

package main

import (
	"github.com/gin-gonic/gin"
	"fmt"
)

func main() {
	r := gin.Default()
	r.GET("/ping", func(c *gin.Context) {
		fmt.Println("hello world!")
		c.JSON(200, gin.H{
			"message": "pong",
		})
	})
	r.Run() // listen and serve on 0.0.0.0:8080
}
 

4、在/var/www/demo根目录下

#生成go.mod文件
go mod init  demo

打开go.mod文件,内容

module demo
go 1.13

go.mod 是启用了 Go moduels 的项目所必须的最重要的文件,它描述了当前项目(也就是当前模块)的元信息,每一行都以一个动词开头,目前有以下 5 个动词:

module : 用于定义当前项目的模块路径。
go         : 用于设置预期的 Go 版本。
require  : 用于设置一个特定的模块版本。
exclude : 用于从使用中排除一个特定的模块版本。
replace : 用于将一个模块版本替换为另外一个模块版本。
这里的填写格式基本为包引用路径+版本号,另外比较特殊的是 go $version,目前从 Go1.13 的代码里来看,还只是个标识作用,暂时未知未来是否有更大的作用。
 

5、在/var/www/demo根目录下,执行 go build

go build

完成后项目

├── demo
├── go.mod
├── go.sum
└── main.go

项目中增加了go.sum、demo文件

github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/gin-contrib/sse v0.0.0-20190301062529-5545eab6dad3 h1:t8FVkw33L+wilf2QiWkw0UV77qRpcH/JHPKGpKa2E8g=
github.com/gin-contrib/sse v0.0.0-20190301062529-5545eab6dad3/go.mod 
github.com/gin-gonic/gin v1.4.0 h1:3tMoCCfM7ppqsR0ptz/wi1impNpT7/9wQtMZ8lr1mCQ=
github.com/gin-gonic/gin v1.4.0/go.mod h1:OW2EZn3DO8Ln9oIKOvM++LBO+5UPHJJDH72/q/3rZdM=
...
 

go.sum类似于比如 dep 的 Gopkg.lock 的一类文件,它详细罗列了当前项目直接或间接依赖的所有模块版本,并写明了那些模块版本的 SHA-256 哈希值以备 Go在今后的操作中保证项目所依赖的那些模块版本不会被篡改。

我们可以看到一个模块路径可能有如下两种:

github.com/gin-gonic/gin v1.4.0 h1:3tMoCCfM7ppqsR0ptz/wi1impNpT7/9wQtMZ8lr1mCQ=
github.com/gin-gonic/gin v1.4.0/go.mod h1:OW2EZn3DO8Ln9oIKOvM++LBO+5UPHJJDH72/q/3rZdM=
 

前者为 Go modules 打包整个模块包文件 zip 后再进行 hash 值,而后者为针对 go.mod 的 hash 值。他们两者,要不就是同时存在,要不就是只存在 go.mod hash。

那什么情况下会不存在 zip hash 呢,就是当 Go 认为肯定用不到某个模块版本的时候就会省略它的 zip hash,就会出现不存在 zip hash,只存在 go.mod hash 的情况。

go.mod文件内容发生了变化,增加了

require github.com/gin-gonic/gin v1.4.0

默认使用最新版本的package。

更换依赖版本

查看gin所有历史版本

go list -m -versions github.com/gin-gonic/gin

github.com/gin-gonic/gin v1.1.1 v1.1.2 v1.1.3 v1.1.4 v1.3.0 v1.4.0

如果想更换依赖版本,比如v1.3.0,怎么办?

只需执行如下命令

go mod edit -require="github.com/gin-gonic/gin@v1.3.0"
go tidy #更新现有依赖

@后跟版本号,这个时候go.mod已经修改好了

require github.com/gin-gonic/gin v1.3.0

查看所有项目依赖的包

go list -m all
github.com/davecgh/go-spew v1.1.0
github.com/gin-contrib/sse v0.0.0-20190301062529-5545eab6dad3
github.com/gin-gonic/gin v1.4.0
github.com/golang/protobuf v1.3.1
github.com/json-iterator/go v1.1.6
github.com/mattn/go-isatty v0.0.7
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd
github.com/modern-go/reflect2 v1.0.1
github.com/pmezard/go-difflib v1.0.0
github.com/stretchr/objx v0.1.0
github.com/stretchr/testify v1.3.0
github.com/ugorji/go v1.1.4
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2
golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c
golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223
golang.org/x/text v0.3.0
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405
gopkg.in/go-playground/assert.v1 v1.2.1
gopkg.in/go-playground/validator.v8 v8.18.2
gopkg.in/yaml.v2 v2.2.2
 

注意
使用go.mod管理依赖会对go get命令产生一定影响,

用 go help module-get 和 go help gopath-get分别去了解 Go modules 启用和未启用两种状态下的 go get 的行为

用 go get 拉取新的依赖

拉取最新的版本(优先择取 tag):go get golang.org/x/text@latest

拉取 master 分支的最新 commit:go get golang.org/x/text@master

拉取 tag 为 v0.3.2 的 commit:go get golang.org/x/text@v0.3.2

拉取 hash 为 342b231 的 commit,最终会被转换为 v0.3.2:go get golang.org/x/text@342b2e

用 go get -u 更新现有的依赖

go mod 相关命令
go mod download 下载 go.mod 文件中指明的所有依赖

go mod tidy 整理现有的依赖,删除未使用的依赖。

go mod graph 查看现有的依赖结构

go mod init 生成 go.mod 文件 (Go 1.13 中唯一一个可以生成 go.mod 文件的子命令)

go mod edit 编辑 go.mod 文件

go mod vendor 导出现有的所有依赖 (事实上 Go modules 正在淡化 Vendor 的概念)

go mod verify 校验一个模块是否被篡改过

go clean -modcache 清理所有已缓存的模块版本数据。

go mod 查看所有 go mod的使用命令


原文链接:https://blog.csdn.net/guyan0319/article/details/101783164

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要配置golang环境,你可以按照以下步骤进行操作: 1. 首先,安装golang编译器。根据你的操作系统,下载并安装golang编译器。 2. 将golang的安装路径添加到系统的Path变量中。在安装文件夹下的bin文件夹中,找到go.exe可执行文件,将bin文件夹的路径添加到系统的Path变量中。\[2\] 3. 创建一个文件夹用于存放你的工程代码,可以将其命名为goprojects,并在该文件夹下创建bin、pkg、src这三个文件夹。bin文件夹用于存放编译项目时生成的可执行文件,pkg文件夹用于存放编译项目时生成的包文件,src文件夹用于存放你编写的代码。\[2\] 4. 配置环境变量。在系统变量中新建以下五个变量:GO111MODULE(设置为on)、GOBIN(设置为你创建的goprojects文件夹下的bin文件夹路径)、GOPATH(设置为你创建的goprojects文件夹路径)、GOPROXY(设置为https://goproxy.cn)、GOROOT(设置为golang编译器的安装路径)。这些变量的设置将完成环境变量的配置。\[2\] 5. 如果你在中国,由于无法访问proxy.golang.org,你可以配置goproxy.cn代理来解决包的下载问题,并提升下载速度。\[3\] 通过以上步骤,你就可以成功配置golang环境了。 #### 引用[.reference_title] - *1* [Golang环境配置步骤](https://blog.csdn.net/RZTUSHU1/article/details/126797218)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [GO语言环境配置](https://blog.csdn.net/weixin_48381563/article/details/126208312)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [golang环境详细安装、配置](https://blog.csdn.net/qq_44830881/article/details/123457805)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值