GO基础总结

环境搭建

通过 go version 查看安装的版本

➜ go version
go version go1.23.0 windows/amd64

环境变量

这三个是搭建 Go 开发环境最基本、必须了解的变量。

GOROOT

Go 语言安装的根目录。它指向 Go 的 SDK 所在位置,其中包含标准库、编译器、链接器等所有自带的工具。默认值:通常为 /usr/local/go(Unix-like)或 C:\Go(Windows)。现代版本的 Go 通常能自动设置,一般不需要手动修改。除非你安装了多个 Go 版本并需要切换。

GOPATH

含义:在 Go Modules 出现之前,这是所有 Go 代码的工作目录。它有三个子目录:src(源代码)、pkg(编译后的包文件)、bin(编译后的可执行文件)。自 Go 1.11 引入 Modules 后,GOPATH 的重要性已大大降低。但它仍然存在,主要用于存放通过 go install 安装的可执行工具(在 $GOPATH/bin 下)以及缓存旧版本(Go 1.4及之前)的包。默认值:$HOME/go(Unix-like)或 %USERPROFILE%\go(Windows)。

GOBIN

执行 go install 命令编译生成的可执行文件的存放目录。运行 go install 时,生成的可执行文件会放在此目录下。为了能在终端任何地方直接运行这些工具,强烈建议将 $GOBIN 添加到你的系统 PATH 环境变量中。默认值:默认为 $GOPATH/bin。你可以单独设置它,例如 export GOBIN=$HOME/.local/bin。

命令行工具

go env

会列出所有与 Go 相关的环境变量及其当前值。Windows下输出内容类似于下面这样:

set GO111MODULE=
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\lenovo\AppData\Local\go-build
....
set GOENV=C:\Users\lenovo\AppData\Roaming\go\env
set GOEXE=.exe
set GOEXPERIMENT=
set GOFLAGS=
set GOHOSTARCH=amd64

查看特定的环境变量:go env VARNAME,在 Windows 的 Command Prompt 或 PowerShell 中,用法基本相同。只是变量名的大小写不敏感,但通常保持大写即可。

➜ go env GOPATH			# 输出: /Users/username/go
➜ go env GOROOT			# 输出: /usr/local/go
➜ go env GOPROXY		# 输出: https://goproxy.cn,direct
➜ go env GOPATH GOROOT GOOS GOARCH
C:\Users\lenovo\go
D:\Develop\Go
windows
amd64

使用 -json 标志可以以 JSON 格式输出所有环境变量

go env -json
# 获取特定变量的 JSON 值
go env -json GOROOT GOPROXY

常用环境变量的含义如下

变量名 含义 示例值
GOPATH 工作区目录 /Users/username/go
GOROOT Go 语言安装目录 /usr/local/go
GOBIN 可执行文件安装目录 $GOPATH/bin
GOOS 目标操作系统 darwin, linux, windows
GOARCH 目标架构 amd64, arm64, 386
GOPROXY 模块代理 https://goproxy.cn,direct
GOMODCACHE 模块缓存目录 $GOPATH/pkg/mod
CGO_ENABLED 是否启用 CGO 1 (启用) 或 0 (禁用)

go install

基本语法

参见:https://www.cnblogs.com/vonlinee/p/19005628

包管理

使用import关键字,导入要使用的标准库包或第三方依赖包。

import "a/b/c"
import "fmt"

以下 3 种依赖管理方式

GOPATH模式

GOPATH 模式是 Go 语言在 1.11 版本之前唯一的工作模式,已被 Go Modules 取代

GOPATH 模式是一种,它要求所有的 Go 代码(包括你自己的项目和第三方依赖库)都必须放在一个单一的工作区目录下,这个目录就是 GOPATH

它没有版本的概念,你直接使用代码库的最新代码(默认是 master 分支或默认分支)。

go vendor

go module

Go Modules 是现代的依赖管理系统,以下变量控制其行为。

  1. GOMODCACHE
    • 含义:Go Module 的缓存目录。所有下载的依赖包(包括特定版本)都会存储在这里。
    • 默认值$GOPATH/pkg/mod
    • 用途:你可以通过设置此变量来改变依赖包的缓存位置,例如将其放在更大的硬盘分区上。
  2. GOPROXY
    • 含义:Go Module 代理服务器的地址。用于加速依赖包的下载和提供稳定的可用性。
    • :是一个逗号分隔的 URL 列表,也可以是特殊值 direct(直连代码仓库)或 off(禁用网络)。
    • 推荐设置https://goproxy.cn,direct(适用于中国大陆,将 goproxy.io 或官方 proxy.golang.org 替换为国内镜像源以大幅提升下载速度)。
    • 工作流程:Go 工具会按顺序尝试列表中的代理,直到成功为止。最后的 direct 表示如果所有代理都失败,则直接尝试连接版本控制系统(如 GitHub)。
  3. GOSUMDB
    • 含义:Go Checksum Database 的地址。用于验证下载的依赖包是否未被篡改,确保安全。
    • 默认值sum.golang.org
    • 注意:在中国大陆访问此数据库可能较慢或不可用。如果你使用了可信的国内代理(如 goproxy.cn),它通常会配备自己的校验数据库,通常不需要单独修改。在特殊内网环境下可设置为 off 来关闭校验(不推荐)。
  4. GOPRIVATE / GONOPROXY / GONOSUMDB
    • 含义:用于控制哪些私有模块(例如公司内部的 GitLab 仓库)通过公共代理 (GOPROXY) 下载,也进行公共校验和校验 (GOSUMDB)。
    • :逗号分隔的模块路径前缀 glob 模式列表(如 *.company.com,github.com/yourname/private-repo)。
    • 关系
      • GOPRIVATE 设置了,就自动同时设置了 GONOPROXYGONOSUMDB
      • 你也可以单独精细控制 GONOPROXYGONOSUMDB

工具链

https://go.dev/doc/toolchain

posted @ 2025-09-18 22:04  vonlinee  阅读(1)  评论(0)    收藏  举报