go语言的工作空间和GOPATH环境变量介绍

 更新时间:2020年12月16日 14:59:30   作者:林佳楠  
这篇文章主要介绍了go语言的工作空间和GOPATH环境变量介绍,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

go语言并没有强制一定要使用一定的工作空间和项目结构,对于小型的go程序依靠go run等命令就可以直接编译运行。

然而,保持良好的工作空间和文件结构,对于管理源代码和发布程序都是非常有帮助的。

对于大型的go语言项目,工作空间则是一定要的。

1、go语言的工作空间结构

go语言的工作空间其实就是一个文件目录,目录中必须包含src、pkg、bin三个目录。

其中src目录用于存放go源代码,pkg目录用于package对象,bin目录用于存放可执行对象。

使用go的编译命令工具可以将源代码或package编译后的二进制输出对应存储到bin和pkg目录中。

src目录中的源代码根据package名分类到对应的子目录中,并且可以使用各种版本控制工具。

举个例子,go的工作空间目录结构大致如下:

bin/
  hello             # 可执行命令
  outyet             # 可执行命令
pkg/
  linux_amd64/
    github.com/golang/example/
      stringutil.a      # package对象
src/
  github.com/golang/example/
    .git/           # Git仓库数据
    hello/
      hello.go        # 源代码
    outyet/
      main.go        # 源代码
      main_test.go      # 测试源代码
    stringutil/
      reverse.go       # package源代码
      reverse_test.go    # 测试源代码

上面的工作空间中包含了一个名为example的仓库,其中包含了hello和outyet两个命令,还有一个stringutil库。

另外,一个工作空间中通常都会包含多个仓库。

2、GOPATH环境变量

GOPATH是go语言中跟工作空间相关的环境变量,这个变量指定go语言的工作空间位置。

当你建立工作空间目录后,你需要把工作空间目录的路径添加的GOPATH环境变量中。GOPATH环境变量支持多个值,如果你有多个工作空间,可以把多个工作空间值都添加到这个环境变量中,window系统使用分号";"分隔不同值,Linux或Unix系统使用冒号”:“分隔不同值。

另外,还要将所有工作空间的bin路径添加到PATH环境变量中。

在Linux系统下可以在~/.profile文件末尾添加如下内容:

$ export GOPATH=你的工作空间路径

$ export PATH=$PATH:$GOPATH/bin

当然,如果你的工作空间不止一个,PATH变量中不能直接使用$GOPATH/bin,要分别将各个工作空间中的bin路径添加进去。

需要注意的是,GOPATH环境变量的值不能与安装的go目录相同。

go目录中同样有src、pkg、bin等类似工作空间的目录结构,不过其中包含的是go的标准模块,最好不要将自己的工作空间和go目录混合,对于以后升级go版本也比较容易。

补充:go环境变量配置 (GOROOT和GOPATH)的区别和含义

GOROOT就是go的安装路径

在~/.bash_profile中添加下面语句:

GOROOT=/usr/local/go

export GOROOT

当然, 要执行go命令和go工具, 就要配置go的可执行文件的路径:

操作如下:

在~/.bash_profile中配置如下:

export $PATH:$GOROOT/bin

如果是windows需要使用;符号分割两个路径, mac和类unix都是用:符号分割

GOPATH:

go install/go get和 go的工具等会用到GOPATH环境变量.

GOPATH是作为编译后二进制的存放目的地和import包时的搜索路径 (其实也是你的工作目录, 你可以在src下创建你自己的go源文件, 然后开始工作)。

GOPATH之下主要包含三个目录: bin、pkg、src

bin目录主要存放可执行文件; pkg目录存放编译好的库文件, 主要是*.a文件; src目录下主要存放go的源文件

不要把GOPATH设置成go的安装路径,

可以自己在用户目录下面创建一个目录, 如gopath

操作如下:

cd ~

mkdir gopath

在~/.bash_profile中添加如下语句:

GOPATH=/Users/username/gopath

GOPATH可以是一个目录列表, go get下载的第三方库, 一般都会下载到列表的第一个目录里面

需要把GOPATH中的可执行目录也配置到环境变量中, 否则你自行下载的第三方go工具就无法使用了, 操作如下:

在~/bash_profile中配置,

export $PATH:$GOPATH/bin

创建一个go项目, 并且编译运行:

mkdir goproject

cd goproject

touch hello.go

在hello.go中输入:

package main
import "fmt"
func main() {
   fmt.Println("Hello, GO !")
}

在项目根目录下执行go build命令来构建你的项目, 构建后会生成hello文件

运行生成的文件./hello, terminal中输出: Hello, GO !

当然你也可以直接运行命令go run hello.go来执行程序.

如果要上述设置生效,可以执行命令: source ~/.bash_profile,上述所有操作均为mac系统下的操作,如果是非mac系统,请自行变通。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

相关文章

  • go语言环境搭建简述

    go语言环境搭建简述

    本文简单记录了下go语言环境的搭建流程,给小伙伴们一个参考,希望大家能够喜欢。
    2015-01-01
  • golang如何用type-switch判断interface变量的实际存储类型

    golang如何用type-switch判断interface变量的实际存储类型

    这篇文章主要介绍了golang如何用type-switch判断interface变量的实际存储类型,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • Golang教程之不可重入函数的实现方法

    Golang教程之不可重入函数的实现方法

    这篇文章主要给大家介绍了关于Golang教程之不可重入函数的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-09-09
  • Golang中异常处理机制详解

    Golang中异常处理机制详解

    这篇文章主要给大家介绍了关于Golang中异常处理机制的相关资料,其实Go语言的异常捕获要比Python中简单的多,它没有Python中那么多复杂的异常类型及继承体系,需要的朋友可以参考下
    2021-06-06
  • 代码整洁利器go fmt命令使用详解

    代码整洁利器go fmt命令使用详解

    这篇文章主要为大家介绍了代码整洁利器go fmt命令使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • Go语言从单体服务到微服务设计方案详解

    Go语言从单体服务到微服务设计方案详解

    这篇文章主要为大家介绍了Go语言从单体服务到微服务设计方案详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • Go 文件读取和写入操作全面讲解

    Go 文件读取和写入操作全面讲解

    这篇文章主要为大家介绍了Go文件的读取和写入操作示例的全面详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • Golang 依赖注入经典解决方案uber/fx理论解析

    Golang 依赖注入经典解决方案uber/fx理论解析

    这篇文章主要为大家介绍了Golang依赖注入经典解决方案uber/fx理论解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • 关于Golang变量初始化/类型推断/短声明的问题

    关于Golang变量初始化/类型推断/短声明的问题

    这篇文章主要介绍了关于Golang变量初始化/类型推断/短声明的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • mac下安装golang框架iris的方法

    mac下安装golang框架iris的方法

    这篇文章主要介绍了mac下安装golang框架iris的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11

最新评论