复习 Golang Chapter 1 开发环境与配置

发布时间 2023-11-04 21:26:50作者: 我听不见

学习安装以及配置常见的 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 环境变量来影响上面的 $HOME
建议明确指定你的 GOPATH 环境变量,并且把 $GOPATH/bin目录置于操作系统的可执行路径 path 下

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 版本编译,如果你下载的应用提供了对应系统的 release,直接下载是最好的。
另外,使用此命令需要你安装 Git
如果需要更新到新版本,@符号后指定一个新版本号或者 @latest
$HOME/bin 目录下的是二进制文件,你可以放到你计算机下的任何其他目录

强制的代码格式

go fmt

分号插入规则
Go 需要分号,但是 Go 开发者从来不手动放置分号,这个工作由编译器来处理,自动分号插入规则如下

  1. 一个标识符( int, float64)
  2. 基本字面量,数字或者字符串常量
  3. break, continue, return, ++, --, ), }, fallthrough

Always run go fmt or goimports before compiling your code!

仅仅有 go fmt 还远远不够,所有的 Go 开发者应该阅读
[[golang tutorial#Effective Go]]
[[golang tutorial#CodeReviewComments]]

golint

$ go install golang.org/x/lint/golint@latest

术语 lint 来源于贝尔实验室,第一个 linter 写于 1978 年

``
golangci-lint
https://golangci-lint.run/usage/install/

Makefile

Go 使用makefile作为构建工具

Windows

如果使用的是 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