Golang 基础-总览(第零章)

1. 预置变量

可以使用 go env 来查看,增加 -w 来修改

GOROOT

go 的安装目录,其下有 binsrcdoc 等目录。

  • bin : 放置 go 和 gofmt 等工具
  • src : 放置 go 标准库代码

GOPATH

工作空间,保存项目代码和第三方依赖包。可以设置多个。

  • 使用 go get 下载的包默认会在第一个的 src 目录下
  • 使用 go install 时,在哪个 GOPATH 中找到了这个包,就会其下的 bin 目录生成可执行文件

其下有 binpkgsrc 3 个目录

  • bin: 放置编译后的可执行文件
  • pkg: 放置编译后的包文件
  • src: 放置项目源文件

GOPROXY

设置下载代理,如设置七牛云为代理库 go env -w GOPROXY=https://goproxy.cn,direct

GO111MODULE

有三个值

  • GO111MODULE=off ,go 命令行不使用 module 功能,寻找依赖包的方式将会沿用旧版本那种通过 vendor 目录或者 GOPATH 模式来查找
  • GO111MODULE=on ,go 命令行使用 modules,此时不会去 GOPATH 目录下查找
  • GO111MODULE=auto,默认值,go 命令行将会根据当前目录来决定是否启用 module 功能。这种情况下可以分为两种情形:
    • 当前目录在 GOPATH/src 之外且该目录包含 go.mod 文件
    • 当前文件在包含 go.mod 文件的目录下面

2. 命令

go env

查看 go 默内置的环境变量,主要有几个 flag

  • -w : 使用 NAME=VALUE 设置变量
  • -u : 查看变量值

go build go run go install

  • go build : 主要检查是否会有编译错误,如果是一个可执行文件的源码(即是 main 包),就会直接生成一个可执行文件
  • go run : 编译并运行程序,它会产生一个临时文件,直接输出执行结果,方便调试
  • go install : 其先编译导入的包文件和主程序,之后将编译后生成的可执行文件放到 bin 目录下($GOPATH/bin),编译后的包文件放到 pkg 目录下($GOPATH/pkg)。

go mod

用来依赖管理和版本控制

  • go mod init <proj-name> : 会在当前目录下生成一个 go.mod 文件,用来管理包

go get

获取代码、编译并安装

  • -d: 只下载不安装
  • -u: 强制使用网络去更新包和它的依赖包
  • -f: 只有在你包含了 -u 参数的时候才有效,不让 -u 去验证 import 中的每一个都已经获取了,这对于本地 fork 的包特别有用
  • -fix: 在获取源码之后先运行 fix,然后再去做其他的事情
  • -t: 同时也下载需要为运行测试所需要的包
  • -v: 显示执行的命令

3. 其他

go.mod go.sum

使用 go mod init <proj-name> 后会生成这两个文件

  • go.mod : 用于管理包目录和版本控制,文件创建后,它的内容将会被 go toolchain 管理。其会在各类命令(如go get、go build、go mod等)执行时,修改和维护 go.mod 文件。
  • go.sum : 包含特定模块版本内容的预期加密哈希值,以确保项目所依赖的模块不会出现意外更改,不需要手工维护