go语言的GOPATH详解

go语言的GOPATH详解,第1张

概述GOPATH是Go语言中使用的一个环境变量,使用绝对路径提供项目的工作目录。工作目录是一个工程开发的相对参考目录。GOPATH适合处理大量Go语言源码、多个包组合而成的复杂工程。1、使用命令行查看GOPATH信息在命令行中运行goenv后,结果如下:GO111MODULE="auto"GOARCH="amd64"GO

GOPATH是Go语言中使用的一个环境变量,使用绝对路径提供项目的工作目录。工作目录是一个工程开发的相对参考目录。

GOPATH适合处理大量Go语言源码、多个包组合而成的复杂工程。

1、使用命令行查看GOPATH信息

在命令行中运行go env后,结果如下:

GO111MODulE="auto"GOARCH="amd64"GOBIN=""GOCACHE="/root/.cache/go-build"GOENV="/root/.config/go/env"GOEXE=""GOFLAGS=""GOHOSTARCH="amd64"GOHOSTOS="linux"GOINSECURE=""GOnopROXY=""GONOSUMDB=""GOOS="linux"GOPATH="/root/gowork/chash"GOPRIVATE=""goproxy="https://goproxy.io"GOROOT="/usr/local/go"GOSUMDB="sum.golang.org"GOTMPDIR=""GOTOolDIR="/usr/local/go/pkg/tool/linux_amd64"GCCGO="gccgo"AR="ar"CC="gcc"CXX="g++"CGO_ENABLED="1"GOMOD="/root/gowork/chash/src/cum/go.mod"CGO_CFLAGS="-g -O2"CGO_CPPFLAGS=""CGO_CXXFLAGS="-g -O2"CGO_FFLAGS="-g -O2"CGO_LDFLAGS="-g -O2"PKG_CONfig="pkg-config"GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdeBUG-prefix-map=/tmp/go-build741438149=/tmp/go-build -gno-record-gcc-switches"

命令行说明如下:

第 1 行,执行 go env 指令,将输出当前 Go 开发包的环境变量状态。第 2 行,GOARCH 表示目标处理器架构。第 3 行,GOBIN 表示编译器和链接器的安装位置。第 7 行,GOOS 表示目标 *** 作系统。第 8 行,GOPATH 表示当前工作目录。第 10 行,GOROOT 表示 Go 开发包的安装目录。

从命令行输出中,可以看到GOPATH设定的路径为:/root/gowork/chash

在 Go 1.8 版本之前,GOPATH 环境变量默认是空的。从 Go 1.8 版本开始,Go 开发包在安装完成后,将 GOPATH 赋予了一个默认的目录,参见下表。

平台GOPATH 默认值举 例
windows 平台%USERPROfile%/goC:\Users\用户名\go
Unix 平台$HOME/go/home/用户名/go

2、使用GOPATH的工程结构

在 GOPATH 指定的工作目录下,代码总是会保存在 $GOPATH/src 目录下。在工程经过 go build、go install 或 go get 等指令后,会将产生的二进制可执行文件放在 $GOPATH/bin 目录下,生成的中间缓存文件会被保存在 $GOPATH/pkg 下。


如果需要将整个源码添加到版本管理工具(Version Control System,VCS)中时,只需要添加 $GOPATH/src 目录的源码即可。bin 和 pkg 目录的内容都可以由 src 目录生成。

3、设置和使用GOPATH

1) 设置当前目录为GOPATH

选择一个目录,在目录中的命令行中执行下面的指令:

export GOPATH=`pwd`

该指令中的 pwd 将输出当前的目录,使用反引号`将 pwd 指令括起来表示命令行替换,也就是说,使用`pwd`将获得 pwd 返回的当前目录的值。例如,假设你的当前目录是“/home/eric/go”,那么使用`pwd`将获得返回值“/home/eric/go”。

使用 export 指令可以将当前目录的值设置到环境变量 GOPATH中。

2) 建立GOPATH中的源码目录

使用下面的指令创建 GOPATH 中的 src 目录,在 src 目录下还有一个 hello 目录,该目录用于保存源码。

mkdir -p src/hello

mkdir 指令的 -p 可以连续创建一个路径。

3) 添加main.go源码文件

使用 linux 编辑器将下面的源码保存为 main.go 并保存到 $GOPATH/src/hello 目录下。

package mainimport "fmt"func main(){    fmt.Println("hello")}

4)编译源码并运行

此时我们已经设定了 GOPATH,因此在 Go语言中可以通过 GOPATH 找到工程的位置。

在命令行中执行如下指令编译源码:

go install hello

编译完成的可执行文件会保存在 $GOPATH/bin 目录下。

在 bin 目录中执行 ./hello,命令行输出如下:
hello world

5)设置好GOPATH之后,GO会识别GOPATH下的src目录,而真正的引用的包名,是src下的目录名,然后才是代码模块名。

 

总结

以上是内存溢出为你收集整理的go语言的GOPATH详解全部内容,希望文章能够帮你解决go语言的GOPATH详解所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1247245.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存