摘要

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

下面开始:

安装

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

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

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

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

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

MSI安装

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

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

完成。

ZIP文件安装

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

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

测试

在命令行中,输入

go version

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

环境变量

GOROOT

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

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

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

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

C:\Go\bin\go.exe version

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

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:



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

平台 GOPATH默认值 举例
Windows %USERPROFILE%/go C:\Users\用户名\go
Unix $HOME/go /home/用户名/go

也就是说,只需要用户在需要的地方设置一个目录,并且将该目录加到环境变量中,并且名为GOPATH,那么就可以将这个目录设置为GOPATH了:

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

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



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

写在最后

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

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

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

最后,再次感谢~

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

Golang入门(1):安装与配置环境变量的意义的更多相关文章

  1. java基础学习总结一(java语言发展历史、jdk的下载安装以及配置环境变量)

    最近一段时间计划复习一下java基础知识,使用的视频课程是尚学堂高淇老师的,上课过程中的心得体会直接总结一下,方便以后复习. 一:计算机语言的发展 1:机器语言,最原始的语言,主要有“01”构成,最早 ...

  2. Java基础学习总结一(Java语言发展历史、JDK下载安装以及配置环境变量)

    最近一段时间计划复习一下java基础知识,使用的视频课程是尚学堂高淇老师的,上课过程中的心得体会直接总结一下,方便以后复习. 一:计算机语言的发展 1:机器语言,最原始的语言,主要有“01”构成,最早 ...

  3. Xamarin.Forms教程下载安装JDK配置环境变量

    Xamarin.Forms教程下载安装JDK配置环境变量 Xamarin.Form环境配置下载安装JDK JDK是编程Java程序必须的软件.也许有人会问我们用的C#为什么还有Java呢?这是因为我们 ...

  4. JDK和TOMCAT的安装与配置环境变量

    一.JDK该怎么安装与配置环境变量 步骤1.安装JDK选择安装目录,安装jdk1.8.0_77过程中会出现安装提示. 步骤2.(1)安装jdk随意选择目录 只需把默认安装目录\java之前的目录修改即 ...

  5. jdk 安装过程配置环境变量 error 的解决过程

    jdk 安装过程配置环境变量 error 的解决过程 问题背景: 我在安装 jdk 过程中在JAVA_HOME和path中添加路径后, cmd 中输入java 和javac均出现错误,因为之前在 D ...

  6. JDK下载、安装、配置环境变量笔记

    自己总是在下载.安装.配置JDK的环境变量,但是这些需要的专业知识并不难,但有很多细节很重要,总是记不住,而且这些细节一旦出错影响还是很严重的,在网上查到的信息很多都比较零散,而且讲解得也不是很详细, ...

  7. Tomcat服务器下载、安装、配置环境变量教程(超详细)

    请先配置安装好Java的环境,若没有安装,请参照我以下的步骤进行安装! 请先配置安装好Java的环境,若没有安装,请参照我以下的步骤进行安装! 请先配置安装好Java的环境,若没有安装,请参照我以下上 ...

  8. Java 学习(1) ---JDK安装和配置环境变量

    一,Java 开发的第一步,就是安装JDK(Java Development ToolKit  Java开发工具包) JDK 是Java开发的核心,因为它包括Java 运行环境,工具包和命令.当我们安 ...

  9. Linux CentOS7.0下JAVA安装和配置环境变量

    一.前言: CentOS7.0虽然自带JDK1.7和1.8,运行“java -version”命令也可以看到版本信息,但是jdk的安装环境不全,比如缺少tool.jar和dt.jar等,这就导致“ja ...

随机推荐

  1. 爬虫之requestsku

    想用selenium实现B站自动登录已经点赞等功能,看到如何解决滑动解锁有关爬虫的内容,便开始学习爬虫,没过多久又想把记录自己生活的网站做起来,朋友便推荐了layui框架倒腾了一晚上自我觉得是做后台系 ...

  2. python opencv Sobel、Laplace、canny算子的边缘提取 以及参数解析

    前提:各种算子不完全区分好坏,但根据我实际操作分析得到,有的算子之间效果大相径庭,但有的也很相似,也就是各有各的用法,这里按 Sobel.Laplace.canny三种算子作比较,看其结果: 一.  ...

  3. webpack的require.context()实现路由“去中心化”管理

    最近在开发一个大型vue单页面应用的时候,项目最初是将所有的路由写在一个router.js的文件里. const router = new Router({ mode: "history&q ...

  4. Spark实战--搭建我们的Spark分布式架构

    Spark的分布式架构 如我们所知,spark之所以强大,除了强大的数据处理功能,另一个优势就在于良好的分布式架构.举一个例子在Spark实战--寻找5亿次访问中,访问次数最多的人中,我用四个spar ...

  5. 使用docker构建hadoop集群

    docker的使用越来越普遍了,大家不知道docker的还需要进一步学习一下.这次咱们使用docker去进行hadoop集群的构建. 使用docker构建的好处真的很多,一台电脑上可以学习安装很多想做 ...

  6. Java 注解简介

    一,什么叫注解 用一个词就可以描述注解,那就是元数据,即一种描述数据的数据.所以,可以说注解就是源代码的元数据.比如,下面这段代码: 1 2 3 4 @Override public String t ...

  7. seldom之数据驱动

    seldom之数据驱动 如果自动化某个功能,测试数据不一样而操作步骤是一样的,那么就可以使用参数化来节省测试代码. seldom是我在维护一个Web UI自动化测试框,这里跟大家分享seldom参数化 ...

  8. JavaScript初学者

    学习如逆水行舟,不进则退.要逆流而上,逆战! 学习JavaScript这门语言,作为一个初学者,最重要的就是扎实的基础. 只要有了扎实的功底,在后期的学习中才能来去自如的应对各种逻辑难题 下面我们就来 ...

  9. mysql数据库设计文档-导出字段设计

    navicat 是我一直在使用的一个数据库操作工具,非常方便快捷.如果没有可用navicat可以留言邮箱我直接发您. 今天来介绍一下使用navicat导出数据库字段设计.废话不多说,先看导出效果. 查 ...

  10. 大数据软件安装之HBase(NoSQL数据库)

    一.安装部署 1.Zookeeper正常部署 (见前篇博文大数据软件安装之ZooKeeper监控 ) [test@hadoop102 zookeeper-3.4.10]$ bin/zkServer.s ...