Go 本地安装环境配置
0 参考和简介
这两篇文章非常详细的讲解了 Go 的本地安装和环境配置,跟他自己说的一样,踩的坑也是真的多。但这位老哥两篇文章没有整合到一起,看着有点难受。这里记录一下我自己的安装过程。
Go 的这些文件的组织确实还是很重要的,只能说我在学的同时不断地学习如何改进文件组织吧。但是这篇文章不会写更多的东西了。
1 Go 的安装
安装包下载地址,这三个都 OK。
我这里是 Windows 安装,就不提 Linux 了。
Windows 安装包名:go1.17.3.windows-amd64.msi
安装时注意安装目录,我安装在 c:\Program Files\Go
目录下。
在控制台输入
$ go version
如果显示了版本号,即代表安装成功。
在设置环境之前,可以先在任何地方创建一个 go 文件,比如 hello.go
,内容为:
package main
import "fmt"
func main() {
fmt.Println("Hello world!")
}
在命令行输入:(右键 — "在 Windows 终端中打开",默认的一般是 PowerShell)
$ go run hello.go
结果:
2 Go 环境变量的配置
要配置的环境变量有 GOPATH
和 系统变量 Path
。
据说 Go 在 1.6 版本后,这些环境变量都不需要我们手动配置了。安装的时候都会自动配置好。
事实上确实是这样,系统变量 Path
已经设置好了,不需要我们去调整。
但是 GOPATH
是需要调整的。因为 GOPATH
路径是我们的工作区,就是我们放代码的地方。(和上面 Go 的安装目录不是一个东西)
代码别乱放,本来这些语言的配置文件就乱的吓人,就别继续在自己的电脑里乱丢垃圾了。(笑)
例如我的就设为:D:\OneDrive\Codefield\CODE_Go
2.1 设置 GOPATH
路径
打开命令行输入:
$ go env -w GOPATH=我们自己的工作区路径
但结果报了错:
does not override conflicting OS environment variable
不知道是什么原因,哎。
那只能手动到环境变量的地方设置 GOPATH
。怎么找到设置环境变量?我的评价是:善用搜索。
(这是比尔盖茨给你的搜索按钮.jpg)
系统环境变量和账户环境变量选哪个都 OK,但选择账户的环境变量直接一些。
一看原来已经有了。(原本是被设置在了用户文件夹里的,图示是已经修改之后的 GOPATH
)
赶紧把 GOPATH
修改为自己的工作目录吧!
注:如果要变更 GOPATH
的路径,建议把原来 GOPATH
里的 pkg
、bin
、src
三个文件夹也复制过去,不然到时候开发时又要重新配置依赖包,不知情的可能还认为出 BUG 了呢。
2.2 打开 GoMOD,配置代理
打开控制台输入命令。
$ go env -w GO111MODULE=on
$ go env -w GOPROXY=https://goproxy.cn,direct
2.3 在 VS Code 中安装 Go 插件
进入 Extensions 后直接搜索 go,即可安装。
2.4 创建第一个项目
在我们的工作目录下,创建一个 src
文件夹。再在 src
文件夹下创建一个项目文件夹 hello
,项目文件夹 hello
下创建一个 hello.go
文件。
用记事本打开,输入以下代码并保存:
package main
import "fmt"
func main() {
fmt.Println("Hello, 世界")
}
(这确实是你的第一个 Go 的 HelloWorld,但是到能把它在 VS Code 里运行起来还有一段距离,不过也可以先使用 go run
命令编译源码,在命令行里查看结果。
2.5 安装 Go 的依赖包
用 VSCode 打开 你的 GOPATH
文件夹。(文件夹右键 — "通过 Code 打开")
安装了 Go 插件后的 VS Code 现在打开 go 文件后,会自动安装我们自己的必要的环境依赖。
(没自动的话就点点点右下角的 Install All
)
又是几百个 Failed,看着真的很糟心。
但也不是全部都失败了。可以看到 GOPATH
那里还是下了一部分的,在 GOPATH
里创建了 bin
、pkg
文件夹。
But,没想到等一会就安装好了!也没有其他问题。惊喜,感觉就像等了一辈子。
2.6 Go Modules 的使用
Go Mod 是一个 Go 语言依赖库管理器。我们要把它安置在 hello 项目里。
进入我们的 hello
文件夹,并且执行 go mod init
即可。
可以看到多出了一个 go.mod
文件(PS:我没看见博主说的 go.sum
文件)
go.mod
文件记录我们依赖库以及版本号。
用 VS Code 打开 go.mod
:但现在可以看到我们现在什么都库都还没有安装,空空如也。
此时我们这个 hello
项目,就采用了 go mod
进行库依赖管理。
使用起来也非常简单,常用命令就一个 go mod tidy
,通俗来说就是将当前的库源码文件所依赖的包,全部安装并记录下来,多的包就删掉,少了的就自动补上,以后编写完代码后执行 go mod tidy
即可。
更多的使用方式可以执行 go help mod
进行查看。
2.7 VS Code 的 launch.json
配置以及 setting.json
配置
launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "LaunchGo",
"type": "go",
"request": "launch",
"mode": "auto",
"remotePath": "",
"port": 5546,
"host": "127.0.0.1",
"program": "${fileDirname}",
"env": {
"GOPATH": "D:\\OneDrive\\Codefield\\CODE_Go",
"GOROOT": "C:\\Program Files\\Go"
},
"args": [],
//"showLog": true
}
]
setting.json
{
"editor.wordWrap": "on",
"go.useLanguageServer": false,
"editor.minimap.renderCharacters": false,
"editor.minimap.enabled": false,
"terminal.external.osxExec": "iTerm.app",
"go.docsTool": "gogetdoc",
"go.testFlags": ["-v","-count=1"],
"go.buildTags": "",
"go.buildFlags": [],
"go.lintFlags": [],
"go.vetFlags": [],
"go.coverOnSave": false,
"go.useCodeSnippetsOnFunctionSuggest": false,
"go.formatTool": "goreturns",
"go.gocodeAutoBuild": false,
"go.goroot": "C:\\Program Files\\Go",
"go.gopath": "D:\\OneDrive\\Codefield\\CODE_Go",
"go.autocompleteUnimportedPackages": true,
"go.formatOnSave": true,
"window.zoomLevel": 0,
"debug.console.fontSize": 16,
"debug.console.lineHeight": 30
}
出现红色异常的地方直接删除即可,比如删一两个逗号之类的。
记得修改 GOPATH
、GOROOT
、go.goroot
、go.gopath
,改成自己的地址。从 Windows 那里复制来的地址的右斜线记得改成双右斜线,别复制完就走了。
配置好后,直接按 F5 就能进入调试状态。
3 实验调试
结束,爽按 F5,开始调试,看着控制台的输出很开心。
3.1 创建第二个项目
开一个新项目,编译运行:packages.go
package main
import (
"fmt"
"math/rand"
)
func main() {
fmt.Println("My favorite number is", rand.Intn(10))
}
流程:
- 在
src
文件夹下创建try
文件夹。 - 在
try
文件夹下创建packages.go
文件夹。 - 复制
.vscode
文件夹。 - 在
try
文件夹下执行go mod init
命令。 - 实验调试。
结果没问题,非常顺利。目前来说,以后创建项目的大体流程都是一样的。
3.2 项目也可以不放在 src
中
项目不放在 src
文件夹中也是 OK 的。随便在哪里按照上面 3.1 除去第一步的流程创建一个项目,再把 launch.json
的 port
和 host
那两行删除就能正常的编译运行了。
4 总结
充其量算一个不求甚解的流程介绍,照着做下来也不是很懂为什么。据我目前的经验来说这是不大好的。我的评价是:最好继续研究原理。
现在这个教程只是非常非常简单的傻瓜设置,还有很多的局限性。
- 一个项目暂时还只能放一个源代码
- 包的引用形同摆设
- ...