Go常见问题

学习

Go 常见问题

module 设置

修改代理 GOPROXY
go env -w GOPROXY=https://goproxy.cn,direct

修改模式 GO111MODULE
go env -w GO111MODULE=on

包引用

创建模块与调用

创建 2 个同级文件夹,go mod init 两个文件 将 Go 工具从其模块路径重定向到本地目录 同步模块的依赖项,添加代码所需的依赖项,但尚未在模块中跟踪的依赖项 go mod edit -replace example.com/greetings=../greetings go mod tidy go run .

官网说明

方法一

go mod edit 修改路径导入本地包 失败 go mod tidy

方法二

放入路径 hello.go:6:2: package greetings is not in GOROOT (C:\ProgramFiles\Go\src\greetings) 需要管理员权限

方法三

放入路径 %home%/src cd 进入并运行 go 文件

go get -u 才会拉取下载

godoc

创建目录下载包 如果创建在 program 目录下没有权限执行,因此创建在 gopath 下的 src

1
2
3
4
cd $GOPATH/src/golang.org/x/tools/cmd/
go install ...
go get -u golang.org/x/tools/cmd/godoc
go install golang.org/x/tools/cmd/godoc

get/install

go get/go mod vendor

创建工作区 workspaces

初始化 go work init path

生成 go.work

1
2
3
go 1.18

use ./hello

在 workspace 的任何子目录中,模块都会被激活

go run example.com/hello

需外网下载 git clone https://go.googlesource.com/example

将模块添加到工作区 go work use ./example

1
2
3
4
5
6
go 1.18

use (
    ./hello
    ./example
)

这将允许我们使用将在 stringutil 模块副本中编写的新代码,而不是使用 go get 命令下载的模块缓存中的模块版本.

workspace/example/stringutil 目录中创建一个名为 toupper.go 的新文件运行测试

发布模块 go get golang.org/x/example@v0.1.0

删除不存在 use 目录,递归添加目录 go work use [-r] [dir] go work use -drop ./old-module

编辑 work 文件 go work edit

将列表中依赖同步到每个工作区 go work sync

编译与安装应用程序

在目录中运行, 并允许可执行文件测试 go build 查询路径 go list -f 'package'

添加 go 安装目录到系统路径中,这样就可以允许可执行文件无需指定路径 win set PATH=%PATH%;C:\path\to\your\install\directory

或者,如果您的 shell 路径中已经有一个目录(如 $HOME/bin),并且您希望在那里安装 Go 程序,则可以通过使用 go env 命令设置 GOBIN 变量来更改安装目标: go env -w GOBIN=C:\path\to\your\bin

更新 shell 路径后,运行 go install 命令来编译和安装包,然后可直接允许 exe go install

更换环境进行编译

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
# 查看之前的golang编译环境
go env
# 设置成linux对应的
set GOARCH=amd64
go env -w GOARCH=amd64
set GOOS=linux
go env -w GOOS=linux

go build -o [目标可执行程序] [源程序]
# 例子
go build -tags dev -o path main.go

# 还原之前的编译环境

set GOARCH=amd64
go env -w GOARCH=amd64
set GOOS=windows
go env -w GOOS=windows
最后更新于 05月19日 12点44分, 2026年