跟着老猫一起来学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 环境高级编 ...
随机推荐
- Jenkins 使用PowerShell插件部署Net5项目
Jenkins安装 PowerShell plugin 插件 新建自由项目 拖到 构建 处,添加 PowerShell 构建 贴入下方脚本即可 # 变量 $ProjectPath = "E: ...
- React Native startReactApplication 方法简析
在 React Native 启动流程简析 这篇文章里,我们梳理了 RN 的启动流程,最后的 startReactApplication 由于相对复杂且涉及到最终执行前端 js 的流程,我们单独将其提 ...
- TCP协议和套接字
一.TCP通信概述,逻辑连接就是三次握手 二.客户端和服务端实现TCP协议通信基本步骤 1.客户端套接字对象 Socket 2.服务端套接字ServerSocket 客户端补充完整代码:除了创建各自的 ...
- go语言游戏服务端开发(二)——网络通信
一.网络层 网络游戏客户端除了全局登录使用http请求外,一般通过socket长连接与服务端保持连接.go语言的net包提供网络socket长连接相关操作. 对于服务端,一般经历 Listen.Acc ...
- 有关类朋友圈设计(3) -- 数据库设计&现有技术&流程设计
在写之前,先说说当前的系统架构吧 spring cloud + zuul + eureka + oauth2 + redis + rabbitMq 这个系统是由我搭建的,当时采用的springClou ...
- Docker安装flink及避坑指南
Docker安装flink 导航 无处不在的大数据 安装flink 拉取flink镜像 编写docker-compose.yml 生成启动 查看安装效果 常见坑及解决方案 问题1 问题2 参考 本 ...
- linux centos windows服务器修改数据库最大连接数的方法
1.可查询数据库最大连接数 show variables like '%max_connections%'; 2.修改数据库最大连接数,最大限制上限为16384. 找到数据库配置文件my.cnf,在配 ...
- php 日期相关的类 DateInterval DateTimeZone DatePeriod
* DateInterval <?php /** * Created by PhpStorm. * User: Mch * Date: 7/18/18 * Time: 21:30 */ $dat ...
- 鸿蒙内核源码分析(源码注释篇) | 鸿蒙必定成功,也必然成功 | 百篇博客分析OpenHarmony源码 | v13.02
百篇博客系列篇.本篇为: v13.xx 鸿蒙内核源码分析(源码注释篇) | 鸿蒙必定成功,也必然成功 | 51.c.h .o 几点说明 kernel_liteos_a_note | 中文注解鸿蒙内核 ...
- 鸿蒙内核源码分析(任务管理篇) | 任务池是如何管理的 | 百篇博客分析OpenHarmony源码 | v5.05
百篇博客系列篇.本篇为: v05.xx 鸿蒙内核源码分析(任务管理篇) | 任务池是如何管理的 | 51.c.h .o 任务管理相关篇为: v03.xx 鸿蒙内核源码分析(时钟任务篇) | 触发调度谁 ...