Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >学习Go语言-工作区和GOPATH的注意事项

学习Go语言-工作区和GOPATH的注意事项

原创
作者头像
jerryteng
修改于 2018-09-14 10:18:58
修改于 2018-09-14 10:18:58
3.1K0
举报
文章被收录于专栏:jerryteng的专栏jerryteng的专栏

工作区和GOPATH

在开始学习go语言的时候,新手总是会遇到这样那样的问题,

怎么安装go语言,这里就不再详细说明,根据自己的机器来安装合适的版本,

Mac系统直接运行brew即可:

image.png
image.png

接下来说一下 安装之后的设置:

大体我们需要设置3个环境变量,即GOROOT、GOPATH和GOBIN。其中,GOPATH背后的概念是最多的,也是最重要的。

我们先来说一下GOPATH,go1.8之前必须设置这个变量,从go 1.8开始,GOPATH环境变量现在有一个默认值,就是在用户根目录的 go目录。

为什么要设置GOPATH呢?

答案是: 环境变量GOPATH的值可以是一个目录的路径,也可以包含多个目录路径,如果是多个目录,用: 进行分割,每个目录都代表Go语言的一个工作区(workspace)。这些工作区用于放置Go语言的源码文件(source file)目录src ,以及安装(go install)后的中间文件 目录pkg 和可执行文件(executable file)目录bin。

这个问题其实主要考察了4个知识点,分别是:

  • 1.你是否清楚Go语言源码的组织方式;
  • 2.你是否了解源码安装后的结果(只有在安装后,Go语言源码才能被我们或其他代码使用);
  • 3.你是否理解构建和安装Go程序的过程。
  • 4.你是否清楚go build命令的一些可选项的用途和用法

go语言的代码组织方式

Go语言的源码是以代码包为基本组织单位的。

一个代码包中可以包含任意个以.go为扩展名的源码文件。

这些源码文件都需要被声明为属于同一个代码包。即所有的文件都必须以 package xxx 开始

代码包的名称一般会与这些源码文件所在的目录同名。如果不同名,那么在构建、安装的过程中会以代码包名称为准。

代码包的导入路径是其他代码在使用该包中的程序实体时需要引入的路径。在实际使用某个功能之前,我们必须先导入其所在的代码包。 import xxx 。

在工作区中,一个代码包的导入路径实际上就是从src子目录,到该包的实际存储位置的相对路径。

go install 后的结果

install之后的结果存放的目录是在pkg目录下,这里还有一级平台目录叫做平台相关目录。平台相关目录跟目标操作系统有关,是由目标操作系统、下划线和目标计算架构的代号组成的。例如:darwin_amd64 Mac下的目录,这个是由几个环境变量组成

image.png
image.png

构建和安装

构建使用命令go build,安装使用命令go install,

构建和安装代码包的时候都会执行编译、打包等操作,并且这些操作生成的任何文件都会先被保存到某个临时的目录中。

go build 是lib库文件(即package 非main的包),那么操作的结果文件只会存在于临时目录中。这里的构建的主要意义在于检查和验证。

go build是命令文件(即package 为main的包),那么会编译打包,在源码文件目录生成一个可执行文件。

go install 操作会先执行构建,然后还会进行链接操作,并且把结果文件搬运到指定目录。

如果是lib库源码文件,那么结果文件会被搬运到它所在工作区的pkg目录下的平台相关目录中。

如果是命令源码文件,那么结果文件会被搬运到它所在工作区的bin目录中,或者环境变量GOBIN指向的目录中。

这里要注意,如果是设置了多个工作区,那么 GOBIN 是一定要设置的,要不然 go install 就会报错了。

go build 命令详解

go build命令用于编译我们指定的源码文件或代码包以及它们的依赖包。

那么我们怎么确定哪些代码包被编译了呢?有两种方法。

  • 运行go build命令时加入标记-x,这样可以看到go build命令具体都执行了哪些操作。另外也可以加入标记-n,这样可以只查看具体操作而不执行它们。
  • 运行go build命令时加入标记-v,这样可以看到go build命令编译的代码包的名称。它在与-a标记搭配使用时很有用。
image.png
image.png

总结

Go语言提供的很多工具都是在GOPATH和工作区的基础上运行的,比如上面提到的 go build 、 go install 和 go get ,这三个命令,所以 设置GOPATH和工作区才比较重要。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
go学习笔记(二):工作区
上篇文章介绍了go语言开发环境的搭建,本文介绍一下go语言的工作区。在go语言的环境搭建过程中,需要了解3个环境变量:
jinjunzhu
2020/08/19
1.1K0
【Golang】GOOROOT/GOPATH/GOBIN
MaybeHC
2024/04/23
1700
Go语言核心36讲(Go语言基础知识一)--学习笔记
从 Go 1.5 版本的自举(即用 Go 语言编写程序来实现 Go 语言自身),到 Go 1.7 版本的极速 GC(也称垃圾回收器),再到 2018 年 2 月发布的 Go 1.10 版本对其自带工具的全面升级,以及可预见的后续版本关键特性(比如用来做程序依赖管理的go mod命令),这一切都令我们欢欣鼓舞。Go 语言在一步步走向辉煌的同时,显然已经成为软件工程师们最喜爱的编程语言之一。
郑子铭
2021/10/11
8100
Go语言核心36讲(Go语言基础知识一)--学习笔记
工作区介绍
1.一个代码包可以有多个以.go为扩展名的源码文件组成如下,demo1.go demo2.go 和 main.go 都属于代码包main,注意同一个目录下的.go 文件只能属于一个代码包
酷走天涯
2019/06/11
8210
工作区介绍
优雅的go语言--入门篇
    2.所有归档文件都会被存放在pkg目录下的平台相关目录中,同样以代码包为组织形式
房上的猫
2019/05/14
4040
Go语言学习1-基础入门
本篇介绍 Go 语言的基础入门知识,如下贴出了 Go 语言相关的网站,方便大家学习
huazie
2024/06/14
2910
Go语言学习1-基础入门
GO语言基础之环境搭建
2、安装:下载完成后,Windows版本直接双击安装(记住这个安装地址,后面配置环境变量时需要用到)
墨紫羽墨
2021/12/19
1.9K1
【文末有惊喜】初探Go的编译命令执行过程
Go 语言这两年在语言排行榜上的上升势头非常猛,Go 语言虽然是静态编译型语言,但是它却拥有脚本化的语法,支持多种编程范式(函数式和面向对象)。Go 语言最最吸引人的地方可能是其原生支持并发编程(语言
李海彬
2018/03/28
1.6K0
【文末有惊喜】初探Go的编译命令执行过程
第9节 Go的执行原理以及Go命令
命令源码文件被安装以后,GOPATH 如果只有一个工作区,那么相应的可执行文件会被存放当前工作区的 bin 文件夹下;如果有多个工作区,就会安装到 GOBIN 指向的目录下。
小尘哥
2019/06/04
6280
第9节 Go的执行原理以及Go命令
Go语言之讲解GOROOT、GOPATH、GOBIN
Go是一门全新的静态类型开发语言,具有自动垃圾回收,丰富的内置类型,函数多返回值,错误处理,匿名函数,并发编程,反射等特性.
超蛋lhy
2018/08/31
3.4K0
Go语言之讲解GOROOT、GOPATH、GOBIN
学习Go语言-GOPATH有多工作区的问题
首先在查找依赖包的时候,总是会先查找 GOROOT目录,也就是go语言的安装目录,如果没有找到依赖的包,才到工作区去找相应的包。
jerryteng
2018/09/14
3K0
学习Go语言-GOPATH有多工作区的问题
Go语言学习(一)| 环境搭建
~/gopath1/src/github.com/xxx~/gopath2/scr/github.com/xxx/usr/local/go/src/github.com/xxx
Mervyn
2020/07/21
6280
Go环境变量及常用命令
Go合法标识符由unicode字符、数字及_组成,但不能以数字开头,用来表示Go代码元素,如变量、函数、类型以及包名等。
宅蓝三木
2024/10/09
890
100天精通Golang(基础入门篇)——第3天:Go语言的执行原理及常用命令、编码规范和常用工具
在学习和使用Go语言过程中,了解其执行原理和常用命令是非常重要的。同时,编写规范的代码和使用常用工具也是提高开发效率和代码质量的关键。本文将深入探讨Go语言的执行原理,介绍常用的命令,以及详细讲解编码规范和常用工具的使用方法。
猫头虎
2024/04/08
5980
100天精通Golang(基础入门篇)——第3天:Go语言的执行原理及常用命令、编码规范和常用工具
初学者没有搞明白的GOROOT,GOPATH,GOBIN,project目录
coders
2018/01/04
2.4K0
初学者没有搞明白的GOROOT,GOPATH,GOBIN,project目录
Go 包概念及其机制详解&内置工具使用简介 【Go语言圣经笔记】
现在随便一个小程序的实现都可能包含超过10000个函数。然而作者一般只需要考虑其中很小的一部分和做很少的设计,因为绝大部分代码都是由他人编写的,它们通过类似包或模块的方式被重用。
Steve Wang
2021/12/06
1.7K0
Go 包概念及其机制详解&内置工具使用简介 【Go语言圣经笔记】
Go语言基本环境变量与依赖管理
最近开始系统学习一下Golang这么新语言,记录一下它的基本环境变量配置以及依赖管理方式。编写本文的时候使用的Golang版本为go1.13.5 windows/amd64,其他版本不一定保证适合本文的内容。因为习惯,可能有时候把Go语言称为Go,有时候称为Golang。
Throwable
2020/06/23
9.3K1
第7节 Go语言环境搭建
当然你也可以登录Golang的国内网站:https://golang.google.cn/
小尘哥
2019/05/28
1.2K0
【从零开始学习Go语言】二.Go语言的安装
在前一篇文章有介绍过,go语言是google维护与更新,开发人员也都是在谷歌工作的人员,可能都会担心众所周知的防火墙,之前确实被屏蔽了,想要下载的话,可以通过此地址进行下载 —传送门
一只特立独行的兔先生
2020/03/25
4.2K0
【从零开始学习Go语言】二.Go语言的安装
Go语言入门——环境准备篇(一)
Robert Griesemer:曾协助制作Java的HotSpot编译器和Chrome浏览器的JavaScript引擎V8
arcticfox
2019/07/31
6360
相关推荐
go学习笔记(二):工作区
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档