复习 Golang Chapter 1 开发环境与配置
学习安装以及配置常见的 Go 环境变量用于开发环境
学习 Go 的一些基本命令以及工具(Makefile)
如何安装与组织你的目录
go 的安装方法直接上 官方网站 按自己的操作系统来
you are free to organize your projects as you see fit.
环境变量
你安装的 third-party 工具所在的地方
$HOME/go
$HOME/go/src
源码目录
$HOME/go/bin
build 后的二进制可执行文件目录
注意,你可以自由的设置 $GOPATH
环境变量来影响上面的 go
路径,不设置的话默认就是你的用户目录下
建议明确指定你的 GOPATH
环境变量,并且把 $GOPATH/bin
目录置于操作系统的可执行路径 path 下,这样你通过 go install
安装后的工具可以直接在命令行使用
Linux like
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
Windows
setx GOPATH %USERPROFILE%\go
setx path "%path%;%USERPROFILE%\bin"
注意:现在已经不使用 GOROOT 环境变量指定 Go 开发环境位置了
编译命令
go run <file_name>
编译后执行并删除掉临时二进制文件
go build <file_name>
编译文件,可以使用 -o <file_name>
参数指定输出文件名
获取第三方的Go工具
不像 Java 的 Maven,js 的 NPM,Go 没有一个中心化的主机服务用于提供这些包
我们使用第三方源代码仓库 go install <repo_address@repo_version>
,下载编译,并且安装到 $GOPATH/bin
目录下,如果你之前将这个目录添加进可执行目录,这时你就可以使用该程序了
但是要注意,不是所有的仓库都支持你当前使用的 Go 版本编译,如果你下载的应用提供了对应系统的发行版,直接下载是最好的
另外,使用此命令需要你安装 Git
如果需要更新到新版本,@
符号后指定一个新版本号或者 @latest
表示最新
$HOME/bin
目录下的是生成出来的二进制文件,你可以放到你计算机下的任何其他目录,就是一个普通的 OS 下的可执行文件,在 Windows 下就是一个 exe 文件
强制的代码格式
go fmt
分号插入规则
Go 需要分号,但是 Go 开发者从来不手动放置分号,这个工作由编译器来处理,会有一个自动分号插入规则,规则作用于语句末尾的最后一个 token,会触发补全分号的 token 类型如下
- 一个标识符( int, float64)
- 基本字面量,数字或者字符串常量
break
,continue
,return
,++
,--
,)
,}
,fallthrough
Always run
go fmt
orgoimports
before compiling your code!
仅仅有 go fmt
还远远不够,所有的 Go 开发者应该阅读
golint
$ go install golang.org/x/lint/golint@latest
术语 lint 来源于贝尔实验室,第一个 linter 写于 1978 年
golangci-lint
https://golangci-lint.run/usage/install/
Makefile
Go 使用 makefile 作为构建工具
.DEFAULT_GOAL := build
fmt:
go fmt ./...
.PHONY:fmt
lint: fmt
golint ./...
.PHONY:lint
vet: fmt
go vet ./...
.PHONY:vet
build: vet
go build hello.go
.PHONY:build
Windows 下安装 make
如果使用的是 windows,先安装一下 Chocolatey
以管理员权限启动命令行,然后运行下列命令
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
PS D:\ch1> choco -v
2.2.2
PS D:\ch1> choco install make
Go 多版本使用方法
书上的 go get golang.org/dl/go.x.y.z
已经过期了
$ go get golang.org/dl/go.1.15.6
$ go1.15.6 download
go: go.mod file not found in current directory or any parent directory.
'go get' is no longer supported outside a module.
To build and install a command, use 'go install' with a version,
like 'go install example.com/cmd@latest'
For more information, see https://golang.org/doc/go-get-install-deprecation
or run 'go help get' or 'go help install'.
starting in Go 1.17, installing executables with go get is deprecated. go install may be used instead.
https://go.dev/doc/manage-install#installing-multiple
现在(2023年11月4日)的方法
PS D:\ch1> go install golang.org/dl/go1.21.3@latest
PS D:\ch1> go1.21.3 download
Downloaded 0.0% ( 16384 / 73755567 bytes) ...
Downloaded 6.7% ( 4931584 / 73755567 bytes) ...
Downloaded 41.9% (30883648 / 73755567 bytes) ...
Downloaded 72.9% (53739120 / 73755567 bytes) ...
Downloaded 100.0% (73755567 / 73755567 bytes)
Unpacking C:\Users\windows_user\sdk\go1.21.3\go1.21.3.windows-amd64.zip ...
Success. You may now run 'go1.21.3'
PS D:\ch1> go1.21.3 version
go version go1.21.3 windows/amd64