golang快速入门

252 阅读4分钟

1. golang下载

1. [Go官方镜像站点:https://golang.google.cn/dl/](https://golang.google.cn/dl/)  (**选择默认的最高版本就好,Go代码向下兼容****版本之间的差异并无所谓**2. 可选择1.15  ,1.16或1.17以上版本

环境变量

1. Go 语言需要配置 GOROOT 和 Path 两个环境变量:GOROOT 和 GOPATH。
2. GOROOT 是go的sdk目录,这里面的东西不要删除,也不要添加
3. GOPATH是我们开发者自定义的项目的根目录,所有的go项目都要放置到这个目录之下(使用go mod模式)
4. 如果第一步安装使用的是默认安装目录 C:\Go\,那么安装程序就已经将 GOROOT 和 Path 两个环境变量设置好了,无须再对其进行手工设置。
5. 如果你第一步没有使用默认安装目录,那么需要对上述两个变量进行手工配置,注意 Path 配置时不要影响到其他安装程序(如 Java,Oracle,Maven 等等)。
6. 默认go_path路径为| Windows | %USERPROFILE%/go | C:\Users\用户名\go| | Unix | $HOME/go | /home/用户名/go |
7. 自定义GOPATH路径如D:\GoWorks,一般,bin和pkg目录可以不创建,go命令会自动创建(如 go install),只需要创建src目录即可,即D:\GoWorks\`src`,D:\GoWorks\`pkg`,D:\GoWorks\`bin,否则go无法将这个文件夹识别为GOPATH路径(bin存放编译后的可执行文件;pkg存放编译后的包文件;src存放项目源文件。)`
8. 配置环境变量
9. GOPATH,将其指向你的代码目录,同时增加goroot环境变量

查看配置

1. 安装后,打开`CMD`窗口,输入`go version`命令,显示版本表示安装成功
2. 输入`go env`查看Go配置
3. 执行go env -w GOPROXY=[https://goproxy.cn,direct](https://goproxy.cn%2Cdirect/),(因国内访问不到默认官网源,修改国内镜像站点代理下载包)

编写第一个 Go 程序

1.  如果是普通包,当你执行go build之后,它不会产生任何文件。【非main包】
2.  如果是main包,当你执行go build之后,它就会在当前目录下生成一个可执行文件exe。如果你需要在$GOPATH/bin下生成相应的文件,需要执行go install,或者使用go build -o 路径/xxx.exe xxx.go

安装goland

1.  推荐安装新版本
2.  配置file-settings-go配置gopath&goroot
3.  Run/Debug Configurations配置go build

包管理

- go最早的时候只支持GOPATH
- go1.5引入通知设置GO15VENDOREXPERIMENT=1开始支持vendor,注意还是需要GOPATH
- go1.11引入module概念,同时引入GO111MODULE=auto|on|off,至此可以不需要GOPATH
- GO111MODULE=on,使用go module,不使用GOPATH
- GO111MODULE=off,使用GOPATH,不使用go module
- GO111MODULE=auto,取决于当前工作路径
- 如果在GOPATH/src内,等同于GO111MODULE=off,即使用GOPATH
- 如果在GOPATH/src外,等同于GO111MODULE=on,即不是GOPATH
1.  在 GOPATH 指定的工作目录下,代码总是会保存在 $GOPATH/src 目录下。在工程经过 go build、go install 或 go get 等指令后,会将产生的二进制可执行文件放在 $GOPATH/bin 目录下,生成的中间缓存文件会被保存在 $GOPATH/pkg 下。
2.  设置全局 GOPATH 的方法可能会导致当前项目错误引用了其他目录的 Go 源码文件从而造成编译输出错误的版本或编译报出一些无法理解的错误提示。比如说,将某项目代码保存在 /home/davy/projectA 目录下,将该目录设置为 GOPATH。随着开发进行,需要再次获取一份工程项目的源码,此时源码保存在 /home/davy/projectB 目录下,如果此时需要编译 projectB 目录的项目,但开发者忘记设置 GOPATH 而直接使用命令行编译,则当前的 GOPATH 指向的是 /home/davy/projectA 目录,而不是开发者编译时期望的 projectB 目录。编译完成后,开发者就会将错误的工程版本发布到外网。因此,建议大家无论是使用命令行或者使用集成开发环境编译 Go 源码时,GOPATH 跟随项目设定。在 Jetbrains 公司的 GoLand 集成开发环境(IDE)中的 GOPATH 设置分为全局 GOPATH 和项目 GOPATH,如下图所示。
3.  图中的 Global GOPATH 代表全局 GOPATH,一般来源于系统环境变量中的 GOPATH;Project GOPATH 代表项目所使用的 GOPATH,该设置会被保存在工作目录的 .idea 目录下,不会被设置到环境变量的 GOPATH 中,但会在编译时使用到这个目录。建议在开发时只填写项目 GOPATH,每一个项目尽量只设置一个 GOPATH,不使用多个 GOPATH 和全局的 GOPATH。Go语言中的 GOPATH 也是一种类似全局包含的设计,因此鉴于 Visual Studio 在设计上的失误,建议开发者不要设置全局的 GOPATH,而是随项目设置 GOPATH。

4. go module和vendor:

go module和vendor是两个冲突的设计,二者只能选一,不可混用。

1.  vendor依赖的是GOPATH,那么必须设置GOPATH
1.  module不使用GOPATH,那么不能设置GOPATH

如果从vendor到module迁移:`-mod=vendor`

5.  常用命令参考:<https://zhuanlan.zhihu.com/p/103534192>

6.  我们的项目中采用go vendor模式,这样重新部署不必每次都go get ,避免网络问题。

image.png

官方文档社区

1. golang中文标准库<https://studygolang.com/pkgdoc>
2. 文档资料<http://books.studygolang.com/>