中修改环境变量_Golang入门(1):安装与配置环境变量的意义

806bbc68ba01a0e31800da6fd9a04069.png

摘要

在几年前学习Java的时候,环境的配置就会劝退一部分的初学者。而对于Golang来说,也需要从环境的配置开始学起。这一篇文章将从如何安装Golang开始讲起,随后将会提到Golang中的环境变量GOROOT和GOPATH的配置以及这两个环境变量起到什么样的效果。
下面开始:

安装

和其他语言的安装类似,golang的安装我们也可以采用三种方式进行,从简单到复杂依次是通过可执行文件的安装、官方二进制包安装和源码编译安装。

我们可以在这里获取最新版本的go安装文件。

在这里解释一下,其实二进制文件的安装和可执行文件的安装方式是一样的,但是在Windows中通过可执行文件来安装会自动配置GOROOT环境变量,更加省事而已。

在这里以Windows为例,其他系统的安装请查看官方文档所介绍的安装方式:

对于Windows用户,可以选择MSI安装程序或ZIP包:

MSI安装

打开所下载的MSI文件,并跟随提示来安装Go工具。默认情况下,该安装程序会将Go发行版放到 C:Go 中。

此安装程序应该会将 C:Gobin 目录放到你的 PATH 环境变量中。

完成。

ZIP文件安装

下载ZIP文件并解压(这里假设已经解压到了C:Go中):

将你的Go根目录中的 bin 子目录(例如 C:Gobin)添加到你的 PATH 环境变量中,如图:

fd93b763ad1b280feefa773005546e0e.png

测试

在命令行中,输入

go version

你将可以看到自己所安装的go版本,如图:

307a75d134a2bd65ed2f47953f5f8b9e.png

环境变量

GOROOT

不知道大家有没有考虑过一个问题,我们为什么需要配置环境变量。

环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息。例如Windows和DOS操作系统中的path环境变量,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path中指定的路径去找。用户通过设置环境变量,来更好的运行进程。

这是百度百科中对于环境变量的定义,也就是说,环境变量是为了方便我们更好的运行某个程序,加入到系统环境变量中的程序,将可以在命令行中直接执行,而不需要我们用绝对路径来执行。比如我们在使用golang的过程中,常常用到go get等;在使用python的过程中,常常用到pip install等,在使用Git的时候,需要使用git clone等。用GO举个例子:

如果我们需要查看go的版本,我们通常是在命令行中输入go version,其实在这里这行命令的全部内容是:

C:Gobingo.exe version

也就是说,操作系统会把加入了环境变量的所有程序,创建了一个类似于快捷方式的路径,使用户的访问可以更加的方便快捷。无论是GO语言,还是其他的语言,都是如此,像我们常常使用的git,为什么我们能直接打git xxx这个命令,而不需要写完整的绝对路径,也是因为他已经被加入了系统的环境变量中:

3a6e883da33cffcdcde4ade4510a07f5.png

GOPATH

GOPATH也被称为Golang的工作目录。它分为两种,一种是全局GOPATH,另一种是项目对应的GOPATH,听起来有点绕,我们下面在进行详细的解释。

总的来说,GOPATH是go命令常常需要用到的,如go rungo installgo get等执行的目标路径,这些命令所操作的目录,就是GOPATH。

再说说GOPATH包含了有哪些结构:

.(GOPATH的路径)
├── bin
├── pkg
└── src
  • src存放的是我们的我们项目的源代码(比如:.go .c .h .s等)
  • pkg编译时生成的中间文件(比如:.a)
  • bin编译后生成的可执行文件

在Golang的项目中,所有的源码都是放在/src中,一般的做法是一个目录一个项目。

也就是说,在开发过程中,如果需要引用到其他的项目,使用import "xxx",将会引用到$GOPATH/src/xxx这个项目,我们可以将这里的src联想为Java开发中的Maven仓库,src内是一个个依赖。go get命令所对应的效果就是给所选择的项目引入远程的包,可以理解为引入依赖。而对于某个项目中,若有package main,则这个go文件是主文件,将会被编译运行。

全局GOPATH与项目GOPATH

然而,我们都知道,在我们开发Java项目的时候,项目的位置和Maven Repository位置是不同的。而在上面的设置中,显然我们的项目和我们引入的其他包写在了一块,这样显得不够优雅,而且可能会因为引用的错误,导致一些编译时的奇奇怪怪的错误。

所以,我们应该为每个项目都设置一个单独的GOPATH。这样,项目在引用包的时候,会首先在GOROOT/src中寻找,例如fmt输入输出包,当无法找到的时候,会寻找PROJECT GOPATH/src,如果还是无法找到,将会寻找GLOBAL GOPATH/src,这样一来,我们就可以将一些通用的包放入全局目录中,其余的自行定义。既保证了项目文件的整洁,也保证了编译的正确性。

如何设置/修改GOPATH

对于全局GOPATH,我们可以用go env命令查看当前的全局GOPATH:

ba81f2db3ba976d8dab72cfe8be7a568.png


可以看到,此时的GOPATH为D:Go_path。然而,如果用户不进行设置,GOPATH是有一个默认值的:

| 平台 | GOPATH默认值 | 举例 | |---------|------------------|-------------------| | Windows | %USERPROFILE%/go | C:Users用户名go| | Unix | $HOME/go | /home/用户名/go | 也就是说,只需要用户在需要的地方设置一个目录,并且将该目录加到环境变量中,并且名为GOPATH,那么就可以将这个目录设置为GOPATH了:

a18ff950c4ba3c48f97c4c048a831258.png

! 注意,有些用户可能会出现创建了文件夹,也添加了环境变量,但是却无法修改GOPATH的情况

这是因为只创建了gopath的文件夹,但是这个文件夹里面不包含srcpkgbin文件夹,所以go无法将这个文件夹识别为GOPATH路径。

f30b07d0b48ccc166fb9a3f4cc363117.png

所以,一定要在你添加的GOPATH路径中加入这三个文件夹,GOPATH的修改才能生效。

写在最后

首先,谢谢各位可以看到这里(鞠躬

作者其实是一个Java开发者,目前也刚刚开始接触Golang这门年轻的语言,想要通过博客的形式,一方面更好的消化所学到的知识,另一方面也希望可以将自己的看法与大家分享,大家一起共同进步(奥利给!

当然,因为作者才识疏浅,肯定有很多疏漏或者认识错误的地方,如果你在本文中发现了与你认识相违背的地方,或者有哪里是作者说的比较含糊不够清晰的地方,请不吝指教交流(再次鞠躬!

最后,再次感谢~

PS:如果有其他的问题,也可以在公众号找到作者。并且,所有文章第一时间会在公众号更新,欢迎来找作者玩~

4b55de6d5c223e126e1ee4c78f194b18.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/417542.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1219个人总结

我们团队使用的工具有:Eclipse,github(保存代码,实现代码合并) 使用的API:Bmob(云数据)官网:http://www.bmob.cn/ Mob(短信验证):http…

华科计算机学院有博士吗,华科计算机学院博士毕业条件

华中科技大学计算机学院2008级博士论文规定根据《华中科技大学申请博士学位发表学术论文的规定》,我院博士研究生申请博士学位前,须按以下要求之一发表学术论文:1、A类、B类或学院规定的国际顶尖学术会议论文一篇;2、SCI期刊论文一…

js IE和Firefox下event处理

如果在使用javascript的时候涉及到event处理,就需要知道event在不同的浏览器中的差异,因为javascript的事件模型有三种,它们分别是NN4、IE4和W3C/Safari;这也造成了在不同的浏览器中处理event的差异,这里结合一些零碎的代码来说明…

线程打印状态_Java线程状态的转换

根据上面关于线程状态的介绍我们可以得到下面的线程状态转换图:BLOCKED与RUNNABLE状态的转换我们在上面说到:处于BLOCKED状态的线程是因为在等待锁的释放。假如这里有两个线程a和b, a线程提前获得了锁并且暂未释放锁,此时b就处于BLOCKED状态。我们先来看一个例子:初…

phpStudy中Xdebug设置 phpStorm设置

在windows系统使用phpstduy集成环境,PHP版本为7.0.1,参考网上文章配置后,在phpinof()中没有xdebug信息, 解决方法,拷贝widzrd.php中提示的文件路径,重启phpstudy后,终于有了xdebug。 1.查看php信息&#x…

SQLSERVER EXCEPT运算符=ORACLE MINUS

Oracle中 MINUS 指令是运用在两个 SQL 语句上。它先找出第一个 SQL 语句所产生的结果,然后看这些结果有没有在第二个 SQL 语句的结果中。如果有的话,那这一笔资料就被去除,而不会在最后的结果中出现。如果第二个 SQL 语句所产生的结果并没有存…

音乐 美术 劳技 计算机教研组工作总结,音体美信息教研组工作总结

音体美信息教研组工作总结本学期音体美信息技术教学工作围绕教研室,结合教导处教研工作安排和音体美劳信息学科特点,以新课程理念建设为核心,以提高教师新课程改革的实践与创新能力为重点,以集中教研培训、校本培训和课改实践课相…

python3.5安装scrapy_Python3.5 win7安装scrapy

1、搭建虚拟环境pip install virtualenvwrapper2、指定虚拟环境存放文件路径2.1:E盘新建EvEvns2.2:计算机->高级系统设置->环境变量->系统变量->新建变量名:WORKON_HOME变量值:E:\Evns保存并退出3、创建虚拟环境mkvirtualenv py34、进入虚拟…

flex 点击空格键会有以前点击过的事件的保留

点击了一个按钮那个就会有焦点。 flex的空格键是默认触发有焦点的按钮的点击事件的。 所以你要在那里按钮事件里面写一个this.setFocus()让焦点消失,就可以去除空格键点击的效果了。

GOAndroid的安装和配置

android环境的配置还是比较复杂的,特别对于我这样一直使用mfc的程序员来说,有很多观念上需要转变。好在配置成功后就能够不断复用,那么这样的问题值得整理出来 一、安装jdk 二、解压adt-bundle-windows(GO)。其中sdk是配置好的 三、配置环境变…

物理与计算机信息工程学院,泉州师范学院物理与信息工程学院

泉州师范学院坐落在全国首批历史文化名城、著名侨乡、国际花园城市——福建省泉州市,有东海和诗山两个校区,占地1185亩。东海主校区位于晋江和洛阳江两江交汇处,携江临海,极目古港沧澜;诗山校区南倚高盖名山&#xff0…

开发项目之考研计划_软件测试之项目测试计划模板

1. 引言1.1. 文档版本1.2. 项目情况1.3. 预期读者----部门经理----项目经理----测试经理----需求分析师----开发工程师----测试工程师----XXX银行经理----XXX基金公司经理1.4. 项目质量定义本项目软件测试是为了保障,XXX财务核算系统在应对营改增政策调整的系统升级…

ie9支持string.trim()

忽然间发现 ie9支持string.trim()! 搞得我以为我写的代码是对的,结过在别的浏览器上一测就报错了。

12.18栈、队列练习题

12.18栈、队列练习题 要求: 栈和队列是线性数据结构的代表,结构简单,易于理解。 1、Noi网站上的必须全做完。 2、codevs上栈和队列的所有等级题全部做 3、线性结构中有个知识点是哈希,1229、1553必须做,不明白哈希的同…

计算机软件总体上分为,山大2017春季班期末考试 信息系统B

管理信息系统模拟题一、填空1、管理信息系统及其子系统组成一个关系图,其关系图中的子系统的中英含义分别是( ),(),()()和( )。2、根据美国国家标准学会(ANSI)于1975年规定了数据库按三级体系结构组织的标准,这就是有名的SPARC分级结构。这三…

KeyCode对照表

字母和数字键的键码值(keyCode)按键键码按键键码按键键码按键键码 A65J74S83149B66K75T84250C67L76U85351D68M77V86452E69N78W87553F70O79X88654G71P80Y89755H72Q81Z90856I73R82048957数字键盘上的键的键码值(keyCode)功能键键码值(keyCode)按键键码按键键码按键键码按键键码 0…

随机效应估算与固定效应估算_一般混合线性模型固定效应、随机效应与另一随机向量的联合估计...

一般混合线性模型固定效应、随机效应与另一随机向量的联合估计周永正【期刊名称】《数学的实践与认识》【年(卷),期】2011(041)019【摘要】讨论一般混合线性模型中固定效应β、随机效应ξ(i1,2,…,k)与另一随机向量δ的联合估计,得到了β、ξi(i1,2,…,k)及δ的线性组合的最佳线…