跟着老猫一起来学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 环境高级编 ...
随机推荐
- 查看所有日志命令:journalctl
journalctl命令作用:实时查看所有日志(内核日志和应用日志) 语法格式: journalctl [参数] 常用参数:-k 查看内核日志-b 查看系统本次启动的日志-u 查看指定服务的日志-n ...
- DorisDB升级为StarRocks,全面开源!
今天被朋友圈刷屏了,StarRocks开源--携手未来,星辰大海! 原文链接:StarRocks开源--携手未来,星辰大海! 可能大家对StarRocks不太熟悉,但是DorisDB想必都是听说过的. ...
- 【Python机器学习实战】决策树与集成学习(六)——集成学习(4)XGBoost原理篇
XGBoost是陈天奇等人开发的一个开源项目,前文提到XGBoost是GBDT的一种提升和变异形式,其本质上还是一个GBDT,但力争将GBDT的性能发挥到极致,因此这里的X指代的"Extre ...
- DPDK应用示例指南简介(汇总)
DPDK应用示例指南简介 <DPDK示例>系列文章主要是学习.记录.翻译DPDK官方示例文档.为了更好地理解和学习DPDK, 特通过对源码中的经典示例进行整理,供大家学习.交流和讨论. A ...
- 用 Java 写个塔防游戏「GitHub 热点速览 v.21.37」
作者:HelloGitHub-小鱼干 本周 GitHub Trending 的主题词是:多语言.本周特推的 C 语言教程是大家都知道的阮一峰编写的,想必和他之前的技术文章类似,能起到科普作用.再来时 ...
- Vue element keyup.enter失效不起作用
解决方式一 添加按键修饰符@keyup.enter.native 解决方式二 把事件绑定到父元素(外框),需注意多个input问题 <div @keyup.enter="login&q ...
- Vue CSS模拟菜单点击变色
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...
- SpringBoot-自动配置分析-图解
- linux 下 I/O 多路复用初探
本文内容整理自B站up主 free-coder 发布的视频:[并发]IO多路复用select/poll/epoll介绍 引入 一般来讲,服务器在处理IO请求(一般指的是socket编程)时,需要对so ...
- list使用详解
List双向链表 再谈链表 List链表的概念再度出现了,作为线性表的一员,C++的STL提供了快速进行构建的方法,为此,在前文的基础上通过STL进行直接使用,这对于程序设计中快速构建原型是相当有必要 ...