亲测GO环境搭建,理解go build、go install、go get

栏目: Go · 发布时间: 7年前

内容简介:秉承着作为一个新人,要有着“指哪打哪”的觉悟。在老大的需求下,顶上前端的空缺先干阵子前端。当然,在工作之余还是要好好朝着既定的方向努力的,实习结束后还了电脑,这次毕业再来换了新Mac,重新搭下Go的环境,顺便好好总结下,以后随着学习的深入,也会持续更新。

前言:

秉承着作为一个新人,要有着“指哪打哪”的觉悟。在老大的需求下,顶上前端的空缺先干阵子前端。当然,在工作之余还是要好好朝着既定的方向努力的,实习结束后还了电脑,这次毕业再来换了新Mac,重新搭下 Go 的环境,顺便好好总结下,以后随着学习的深入,也会持续更新。

GO下载:

GO语言中文网下载: https://studygolang.com/dl

Mac下直接通过brew instatll go指令即可完成下载安装

GO环境变量配置:

$GOROOT=/usr/local/go                        GO安装目录

$GOPATH=/usr/local/var/www/go          GO工作目录

$GOBIN=$GOPATH/bin                          GO可执行文件目录

$PATH=$PATH:$GOBIN:$GOROOT/bin  将GO可执行文件加入PATH中,使GO指令与我们编写的GO应用可以全局调用

亲测GO环境搭建,理解go build、go install、go get

$GOPATH工作目录结构,约定有三个子目录(需要自行创建):

src ——存放源代码文件

pkg——存放编译后的文件

bin ——存放编译后的可执行文件

示例(首先使用go推荐的go build方式构建应用,稍后会说到其他的方式):

通过我们的操作,在最终测试成功后,$GOPATH的目录树应该如下所示:

亲测GO环境搭建,理解go build、go install、go get

具体操作如下:

1、创建应用包mypkg: 切到【$GOPATH/src】目录下,创建一个mypkg目录,在mypkg目录下,新建一个hello.go,内容如下:

亲测GO环境搭建,理解go build、go install、go get

2、编译应用包(在此Demo中,此步骤并不必要,在此只是为了展示go install编译效果): 在刚刚的目录下执行【go install】指令或者在任意目录下执行【go install mypkg】指令,如果代码有错或依赖找不到会报错,如果正确则没有任何提示。此时,你可以切到【$GOPATH/pkg】目录下,会发现多了一个名为【$GOOS_$GOARCH】的目录,切进该目录,就会看到刚刚编译生成的文件mypkg.a文件。(其中$GOOS与$GOARCH的具体值可以通过【go env】指令查询,更多详情可参看: http://wiki.jikexueyuan.com/project/go-command-tutorial/0.14.html

亲测GO环境搭建,理解go build、go install、go get

3、创建新应用包myapp,创建新文件main.go(同步骤1),import引入mypkg包 ,内容如下:

亲测GO环境搭建,理解go build、go install、go get

4、构建可执行文件: 在myapp目录下,使用【go build】指令,会在当前目录下生成一个myapp的可执行文件,这个可执行文件不依赖其他文件,复制到任何目录下都可通过【./myapp】执行,复制到任何$PATH配置的目录中都可通过【myapp】全局执行。

亲测GO环境搭建,理解go build、go install、go get

亲测GO环境搭建,理解go build、go install、go get

亲测GO环境搭建,理解go build、go install、go get

总结: 我们在这个Demo里主要用到了两个GO指令,【go install】与【go build】,他们的区别如下:

【go build】指令的作用是: 在当前目录下编译生成可执行文件。注意,go build指令会调用所有引用包的源码,重新编译,而不是直接使用pkg里的编译后文件,如果在【$GOROOT】与【$GOPATH】下没有找到import引入包的项目源码,就会报错。在本demo里,main.go中import引入了"mypkg"包,如果我删除【$GOPATH/src/mypkg】源码,执行【go build】指令,会报错如下:

亲测GO环境搭建,理解go build、go install、go get

【go install】指令的作用是: 编译源代码,如果为可执行文件(package "main"且包含main方法),则会编译生成可执行文件到【$GOPATH/bin】目录下;可执行文件import引入的其他包,就会被编译到【$GOPATH/pkg/$GOOS_$GOARCH】目录下。

(关于go的导入和编译,如果有不清楚的,可以看下这篇博客 https://studygolang.com/articles/3189

我们会发现: 【go install】也可以完成类似【go build】的功能,区别在于【go install】会生成二进制文件到【$GOPATH/pkg/$GOOS_$GOARCH】目录下(这个二进制文件对于我们并没什么意义),但【go install】会把可执行文件自动生成到【$GOBIN】目录下,这是在一开始被配置到【$PATH】中了,这样就可以使项目可执行文件能被方便的全局调用。

如果在本Demo中,使用【go install】构建可执行文件

我们编写好源代码文件时,目录树如下:

亲测GO环境搭建,理解go build、go install、go get

切到myapp目录下,执行【go install】指令,会生成如下结构目录树:

亲测GO环境搭建,理解go build、go install、go get

此时就可以通过【myapp】全局执行了!

其他指令:

go env指令可检查go环境

亲测GO环境搭建,理解go build、go install、go get

go version查看go版本

亲测GO环境搭建,理解go build、go install、go get

go get可以暂时理解为git clone到【$GOPATH/src】 + go install


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Blockchain Basics

Blockchain Basics

Daniel Drescher / Apress / 2017-3-16 / USD 20.99

In 25 concise steps, you will learn the basics of blockchain technology. No mathematical formulas, program code, or computer science jargon are used. No previous knowledge in computer science, mathema......一起来看看 《Blockchain Basics》 这本书的介绍吧!

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具