golang之常用命令
golang常用操作与命令
1.执行golang文件
go run hello_world.go
2.编译成可执行文件(交叉编译)
go build hello_world 则会生成hello_world可执行文件,即可直接运行 ./hello_world
不同环境下的编译需要修改对应参数:
GOOS=linux
GOARCH=amd64
指定文件名称
go build -o hello.exe # 如果是window下的话 需要加上后面的后缀名
windows下设置方式:
set GOOS=windows; set GOARCH=amd64; go build -v -ldflags "-w -s" -o golang-demo_windows.exe ./cmd/app/main.go
可能这种方式还是会有问题, 导致打包完成的二进制文件, 无法再Linux下正常执行
需要使用: go env -w GOOS=linux 进行设置相关参数即可, 打包完成之后, 记得改回来就行
-v: 打印编译过程
-ldflags: 链接选项,编译时候可以传入一些值作为配置golang应用
-w: 去除调试信息
-s: 去除符号表
-X: 注入变量,编译时赋值
-w -s 一般同时使用,用来减少可执行文件袋额体检, 但删除了调试信息,可执行文件无法使用gdb/dlv调试
3.
go test ./... go list ./... 这里的三个点作为通配符,标识当前目录及其子目录中的所有软件包
4.设置环境变量
// 设置代理 $env:GOPROXY = "https://goproxy.io,direct" // 或者使用 env -w go env -w GOPROXY="https://goproxy.io,direct"
常用环境变量:
GOROOT GOROOT 表示 Go 语言的安装目录。 GOROOT 的作用是用来索引 Go 语言的安装目录下的相关资源,比如 bin 目录的工具(如 go 命令),src 目录下的源码等。 GOPATH GOPATH 用于指定我们的开发工作区,可以有多个。 按照 Go 开发规范,GOPATH 目录下一般分为三个子目录 src,pkg,bin。 src 目录存放我们需要开发的项目源码, pkg 存放依赖的包和编译后的静态库文件, bin 放源代码编译后台的可执行文件。 GO111MODULE 在 go1.11 的时候推出了这个 go modules 来解决依赖管理的问题。 通过变量 GO111MODULE 来控制 Go Module 的开启和关闭,取值 off、on 或 auto。 从 Go 1.13 开始,Go Module 作为 Golang 中的标准包管理器。 GOPROXY go get 下载依赖时使用的代理地址列表,使用逗号 (,) 或竖杠 (|) 分隔。 当用 go 命令查找依赖模块时,它会按顺序访问 GOPROXY 列表中的每个代理,直到收到成功的响应或出现终端错误。 GOPROXY 中可能会存在两个关键字来代替代理URL: off:不允许从任何源下载依赖的模块 direct: 直接从版本控制存储库下载,而不是使用模块代理 GOPROXY 缺省值为https://proxy.golang.org,direct。 GOPRIVATE go get 通过代理服务拉取仓库时,因为代理服务不可能访问到私有仓库(一般为企业内部代码管理平台),会出现 404 错误。 go1.13 版本提供了一个方便的解决方案:GOPRIVATE 环境变量。 GOBIN 用于存储我们使用go install命令安装的程序。 如果没有设置 GOBIN,程序一般会安装到为GOPATH/bin目录。 GOOS 当前的操作系统。例如 linux、darwin、windows、netbsd、freebsd、openbsd、solaris、plan9 等。 注意 mac os对应的值是 darwin。 GOARCH 表示 CPU 架构。如 amd64、386、arm、ppc64 等。