环境变量表示Go语言的安装目录。
在中,的默认值是,而在或中的默认值是,如果将Go安装在其他目录中,而需要将GOROOT的值修改为对应的目录。
另外,则包含Go为我们提供的工具链,因此,应该将配置到环境变量PATH中,方便我们在全局中使用Go工具链。
在 go1.11 的时候推出了这个 go modules 来解决依赖管理的问题,类似于PHP的、Nodejs的。Go1.12 成为默认支持; 从此告别源码必须放在 Gopath 中 以及 Gopath 对初学者造成的困扰。通过变量 GO111MODULE 来控制 Go Module 的开启和关闭,取值 off、on 或 auto。从 Go 1.13 开始,Go Module 作为 Golang 中的标准包管理器。Go modules 的出现也解决了在 Go1.11 前的几个常见争议问题:
- Go 语言长久以来的依赖管理问题。
- “淘汰”现有的 GOPATH 的使用模式。
- 统一社区中的其它的依赖管理工具(提供迁移功能)
在 Go modules 中,我们能够使用如下命令进行操作:
关于go.mod
go.mod是Go项目的依赖描述文件,该文件主要用来描述两个事情:
- 当前项目名(module)是什么。每个项目都应该设置一个名称,当前项目中的包(package)可以使用该名称进行相互调用。
- 当前项目依赖的第三方包名称。项目运行时会自动分析项目中的代码依赖,生成go.sum依赖分析结果,随后go编译器会去下载这些第三方包,然后再编译运行。
我们只需设置该环境变量即可正常下载被墙的源码包了。在项目目录 或者 项目子模块下,运行下面命令,会产生一个go.mod文件
我们将之前的项目根目录增加一个文件(也可以在项目根目录下使用 命令初始化项目生成该文件),内容如下
其中,为当前项目的名称,可以随意设置。就这样简单便完成了项目的初始化。
一般情况下,依赖分析文件应当被添加到版本管理中随着文件一起提交。
使用go.mod
使用go.mod意即用go.mod进行项目依赖管理。我们有两种go.mod的使用方式:IDE-vgo和命令行方式。
是基于规范的包管理工具,同官方的命令工具类似。
设置Goland启用
其中请输入代理地址下载依赖包,如果选择表示不使用代理。可选择的反向代理地址有:Project SDK=https://mirrors.aliyun.com/goproxy/
这里请务必选择一个代理地址输入。
这个环境变量主要是用于设置 Go 模块代理(Go module proxy),其作用是用于使 Go 在后续拉取模块版本时能够脱离传统的 VCS 方式,直接通过镜像站点来快速拉取。
GOPROXY 的默认值是:,这有一个很严重的问题,就是 在国内是无法访问的。你必须在开启 Go modules 的时,同时设置国内的 Go 模块代理,执行如下命令
这三个环境变量都是用在当前项目依赖了私有模块,例如像是你公司的私有 git 仓库,又或是 github 中的私有库,都是属于私有模块,都是要进行设置的,否则会拉取失败。
这样子设置的话,所有模块路径为 example.com 的子域名(例如:git.example.com)都将不经过 Go module proxy 和 Go checksum database,需要注意的是不包括 example.com 本身
环境变量表示我们开发程序编译后二进制命令的安装目录。
当我们使用命令编译和打包应用程序时,该命令会将编译后二进制程序打包GOBIN目录,一般我们将GOBIN设置为目录。
1、是用于指定你的 的环境变量,它内部目录一般为:
4、对于第三方依赖包,GO会默认安装在环境变量的第一个的里面,也就是: 5、我们在项目中引入包的时候,默认先从中去找。
6、项目写完后,我们进入(main.go在这个目录下<也可以在更深一层的目录,视自己情况而定>),执行:
go install/go get和 go的工具等会用到GOPATH环境变量。此时会在 :
- pkg 中生成所有的依赖包的编译文件:
- bin 中生成 的编译文件:
7、配置 .gitignore 文件时,忽略 pkg、bin 目录
为什么弃用 GOPATH 模式
在 GOPATH 的 下进行 文件或源代码的存储,我们可以称其为 GOPATH 的模式,这个模式,看起来好像没有什么问题,那么为什么我们要弃用呢,参见如下原因:
- GOPATH 模式下没有版本控制的概念,具有致命的缺陷,至少会造成以下问题:
- 在执行的时候,你无法传达任何的版本信息的期望,也就是说你也无法知道自己当前更新的是哪一个版本,也无法通过指定来拉取自己所期望的具体版本。
- 在运行 Go 应用程序的时候,你无法保证其它人与你所期望依赖的第三方库是相同的版本,也就是说在项目依赖库的管理上,你无法保证所有人的依赖版本都一致。
- 你没办法处理 v1、v2、v3 等等不同版本的引用问题,因为 GOPATH 模式下的导入路径都是一样的,都是。
- Go 语言官方从 Go1.11 起开始推进 Go modules(前身vgo),Go1.13 起不再推荐使用 GOPATH 的使用模式,Go modules 也渐趋稳定,因此新项目也没有必要继续使用GOPATH模式。
切换国内Go源
国内提供的sum验证服务
build command-line-arguments: cannot find module for path
方法1:如果之前Go环境安装是直接下载msi文件
- 1、打开shell命令窗:ctrl+r , 输入 cmd,
- 2、输入go env -w GO111MODULE=auto,这句是将GO111MODULE设为自动。
- 3、再次测试,问题解决
方法2:如果是自己设置的环境变量
- 1、右键计算机,点击属性,打开高级系统设置,点击环境变量,找到GO111MODULE,编辑GO111MODULE,将on改为auto或者off。
- 2、再次测试,问题解决
Failed to run File Watcher 'go fmt'.
The watcher has been disabled.
Error: Invalid executable
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/rfx/60309.html