跟着老猫一起来学GO,环境搭建
老猫的GO学习系列博客已经正式发车了,相信大家以前学习一门编程语言的时候也有经验,咱们一般都是从环境开始,在此呢,大家也跟着老猫从最开始的搭建环境开始。
GO语言的安装
首先呢,我们开始需要下载GO语言的安装包。GO国外的官网地址是https://golang.org/,当然这个仅限于有条件的小伙伴去官网下载了。我们一般下载呢都有所限制,不过没关系,在国内其实也有对应的网站为https://golang.google.cn/。还有一个网站中也可以下载,差不多是一个GO语言的学习社区,地址为https://studygolang.com/dl。比较推荐后者,相关的中文英文文档也是比较全的。访问https://studygolang.com/dl打开是这样的:

大家根据自己的环境,选择对应的安装包一步步安装即可。这个太简单了,就不展开了。
安装完毕之后,大家在命令行运行go version命令得到相关的版本信息,那么就安装完成了。老猫由于之前就已经安装过了,目前不是那个最新的版本,所以安装完毕之后的版本信息如下。

国内镜像的配置
关于go环境搭建的过程中比较重要的一点是镜像的配置,大家输入命令go env 可以看到相关go 语言的环境的一些配置。

goproxy设置
老猫当前的计算机环境是windows,所以看到的信息如上,上面有一个比较重要的属性信息叫做goproxy,老猫目前的设置是https://goproxy.cn,direct,大家安装完毕之后默认的地址应该是https://proxy/golang.org,direct。那么这个配置到底是做什么的呢?其实很简单,可以类比maven,这个其实也是一个依赖,配置这个代理信息之后,就会从远程的仓库拉取相关的go所需要依赖。后面的direct表示如果前者不能提供所需要的依赖那么我们可以重新从其他第三方获取依赖,比如配置成某github的依赖。
大家如果网络上没有条件的话,配置成默认的地址应该是无法拉取相关的依赖的,所以在此呢,最好配置成我们国内的镜像。
老猫配置国内镜像其实主要参考这个网址:https://goproxy.cn/,打开之后,上面有详细的设置命名的,大家照着上面设置即可,当然这里有个坑点就是咱们的go的版本号必须是1.13以上,当然如果是下载的最新安装包的小伙伴其实是没有这个问题的。

GO111MODULE设置
上面的截图中我们其实还看到一个比较重要的属性,就是GO111MODULE,老猫查询了其他的一些资料。
在go1.11版本以前,想要对GO语言进行包管理,只能依赖第三方的库进行实现,比如Vendor,GoDep等等。但是在这之后,我们就可以根据这个开关来实现包管理。
GO111MODULE这个开启或者关闭主要有三个值可以选择:off、on 、auto,默认值是个“”,其实也就是auto。
- GO111MODULE=off 无模块支持,go会从GOPATH和vendor文件寻找包。
- GO111MODULE=on 模块支持,go会忽略gopath和vendor文件夹,只根据go.mod下载依赖。
- GO111MODULE=auto在$GOPATH/SRC外面且根目录有go.mod文件时开启模块支持。
以上这些描述其实听下来感觉是一知半解的样子,在此其实也不用过多去纠结,因为在后面深入的过程中,我们就会慢慢领会了。当然后续老猫在和大家分享“依赖管理”的时候会和大家深入地去探讨一下。在此呢,我们将其属性设置成on。设置的命令上面也有。比较需要注意的是,在设置的时候大家需要设置成小写的on才行,不要手误操作错了。
开发工具配置
上面介绍了相关go环境的配置其实到此已经OK了,那么下面咱们就可以挑选一个比较趁手的工具开始配置完之后撸代码了。其实go相关的开发工具有很多,比如vi,emacs,idea,eclipse,vscode,sublime..+go插件。当然IDE系列的也有goland的,大家也可以去官网进行下载。老猫接下来会其中一种开发工具,IDEA+GO插件的方式,由于老猫是JAVA后端,用惯了IDEA,所以在此也就先介绍这款配置。当然其他开发工具的相关配置,大家可以自行去度娘或者谷歌去找一下。
idea插件推荐
第一个插件当然是go插件,具体如下:

这是老猫本地的环境,已经安装完毕了。
另外一个插件是File Watcher,大家可以自行像上面那样搜索之后进行install。这个工具其实是一个自动格式化的工具,当我们保存文件的时候就会按照GO语言的标准进行格式化了。
安装完毕之后我们重启IDEA,然后建立一个GO项目,来写一个GO版本的HELLO WORLD。具体如下

我们需要建立一个GO MODULE的项目,此处有个主意点就是proxy的时候,它默认会是default,我们将其改成https://goproxy.cn,direct即可,当然这个路径就是我们上面所配置的代理。由于项目暂时不涉及SQL,所以我们直接下一步并且取名完成即可。
大家可以看一下老猫的项目。

注意点,这里进行new文件的时候,选择simpleApplication类型的,点击运行,砸门的helloworld就显示在控制台上了。
上面老猫说的file watcher插件目前是不生效的,其实我们还要进行设置一下,具体设置如下。

首先我们需要将该设置去除。

然后咱们重新搜索file watcher选中之后点击+号,添加goimports插件,如果说没有看到goimports插件,大家切换到命令行输入:go get -v golang.org/x/tools/cmd/goimports即可。
像老猫这样添加完毕之后,然后重启IDEA即可。怎么进行验证安装成功了呢,其实很简单,只要在后面的括号前面加上一个空格,然后保存一下就能看到效果了。
写在本章最后
跟着老猫做完这些,其实大家就已经可以运行出hello world了。后面老猫会慢慢和大家介绍相关GO语言的语法、容器等等。别掉队哦!当然有什么疑问也欢迎大家关注老猫的公众号“程序员老猫”。大家一起探讨,一起进步。

跟着老猫一起来学GO,环境搭建的更多相关文章
- 跟着老猫来搞GO,集跬步而致千里
上次博客中,老猫已经和大家同步了如何搭建相关的GO语言的开发环境,相信在车上的小伙伴应该都已经搞定了环境了.那么本篇开始,我们就来熟悉GO语言的基础语法.本篇搞定之后,其实期待大家可以和老猫一样,能够 ...
- 跟着老猫来搞GO,基础进阶
回顾一下上一篇博客,主要是和大家分享了GO语言的基础语法,其中包含变量定义,基本类型,条件语句,循环语句.那本篇呢就开始和大家同步一下GO语言基础的进阶. 函数的定义 上次其实在很多的DEMO中已经写 ...
- 跟着老猫来搞GO-容器(1)
前期回顾 前面的一章主要和大家分享了GO语言的函数的定义,以及GO语言中的指针的简单用法,那么本章,老猫就和大家一起来学习一下GO语言中的容器. 数组 数组的定义 说到容器,大家有编程经验的肯定第一个 ...
- 跟着老猫来搞GO-内建容器Map
前期回顾 在上面的文章中,老猫和大家分享了GO语言中比较重要的两种数据结构,一种是数组,另外一种是基于数组的slice.本篇文章想要继续和大家分享剩下的容器以及字符字符串的处理. MAP map的定义 ...
- 跟着老猫来搞GO,"面向对象"
前言 之前和大家分享了容器以及相关的基础语法,以及函数,相信如果大家有接触过C++或者java的朋友都晓得面向对象,其实在GO语言中也存在面向对象,但是还是比较简单的,下面我们来看一下GO语言的&qu ...
- 跟着老王学Python
亲爱的朋友: 欢迎你!很高兴能在这里见到你,你能来到这里说明你真的很喜欢python,很想把python给学好!我觉的你很幸运,开始我学python的时候比较少资料,学起来也比较头疼,现在随着 ...
- python开发环境搭建及numpy基本属性-【老鱼学numpy】
目的 本节我们将介绍如何搭建python的开发环境以及numpy的基本属性,这样可以检验我们的numpy是否安装正确了. python开发环境的搭建 工欲善其事必先利其器,我用得比较顺手的是Intel ...
- (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
. . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...
- (四) 一起学 Unix 环境高级编程(APUE) 之 系统数据文件和信息
. . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...
随机推荐
- 剑指offer(一)——二维数组中的查找
题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 ...
- Docker之Alpine制作jre镜像(瘦身)+自定义镜像上传阿里云
alpine制作jdk镜像 alpine Linux简介 1.Alpine Linux是一个轻型Linux发行版,它不同于通常的Linux发行版,Alpine采用了musl libc 和 BusyBo ...
- 前后端数据交互(五)——什么是 axios?
一.什么是 axios ? axios是基于 Promise 的 ajax 封装库,也是前端目前最流行的 ajax 请求库.简单地说发送 get.post 请求,是一个轻量级的库,使用时可直接引入. ...
- 痞子衡嵌入式:MCUXpresso IDE下将应用程序RW段分散链接的几种方法
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是MCUXpresso IDE下将应用程序RW段分散链接的几种方法. 早期的 MCU 芯片,一般都会嵌入内部 Flash 和 RAM,并且 ...
- SciPy笔记
一.简介 SciPy 是一个开源的 Python 算法库和数学工具包.Scipy 是基于 Numpy 的科学计算库,用于数学.科学.工程学等领域,很多有一些高阶抽象和物理模型需要使用 Scipy.Sc ...
- 整合ehcache缓存
一.分布式集群,多态服务器相同的代码,均衡压力: 二. 1.导包,ehcache适用mybatis的jar包: 2.映射配置文件中配置: 3.ehcache配置文件 4.使用代码和mybatis自带的 ...
- 使用Eclipse对weblogic进行远程调试
一.环境说明 weblogic12c,linux centOS 6.5,eclipse mars. 二.步骤 1.找到weblogic根目录下user_projects/domains/域名/bin/ ...
- python库--jieba(中文分词)
import jieba 精确模式,试图将句子最精确地切开,适合文本分析:全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义:搜索引擎模式,在精确模式的基础上,对长词再次切 ...
- WPF WPF中解决内存泄露的几点提示与解决方法
http://www.cnblogs.com/LastPropose/archive/2011/08/01/2124359.html 一直以来用WPF做一个项目,但是开发中途发现内存开销太大,用ANT ...
- JDBC-1(概述&建立)
基于宋红康老师所讲JDBC所作笔记 1.JDBC概述 1.1 数据持久化 持久化:将数据保持到可掉电式存储设备中以供之后使用. 数据持久化意味着将内存中的数据保存到硬盘上加以固化,实现过程大多通过各种 ...