Go的100天之旅-01初识Go
初识Go
Go简介
Go的历史
- 上个世纪70年代Ken Thompson和Dennis M. Ritchie合作发明了UNIX操作系统同时Dennis M. Ritchie发明了C语言。
- 2007年的Robert Griesemer,Rob Pike和Ken。 Thompson三位大牛在Google公司开始编写和设计Go语言。
- 2009年Go正式宣布推出,版本1.0在2012年3月发布。
- 版本1.5 新 GC 算法,实现并发标记和清理,增加控制器和辅助回收等
- 版本1.11 实验性启用版本和依赖管理 Modules,替代 GOPATH
Go的优缺点
- 优点
- 简单高效,Go继承了C语言,但是语法更加简洁,可以直接编译成二进制文件执行,内置虚拟机运行速度快。
- 并发支持好,Go独特的使用CSP并发模型,简单来说就是“不要以共享内存的方式来通信,相反,要通过通信来共享内存。”
- 静态语言编译时有类型检测,同时提供动态语言的特性,例如支持匿名函数和闭包。
- 内置强大的工具可以帮助开发人员编写的代码可读性和维护性更高。
- 强大的社区和生态系统
- 缺点
- 错误处理,如果有错误,Go需要函数返回错误。可能导致错误跟踪丢失和缺少有用的错误处理逻辑。
- 包管理,Go的包管理不完善,虽然Go 1.11版本加入了go mod解决一直存在的依赖管理的短板,但是一些老项目支持并不好
Go应用的领域
Go经过十几年的发展,已经广泛的用于各大公司和项目中,比较著名的项目如Docker、Consul、Kubernetes等
Go的环境搭建
Go 支持Linux FreeBSD Windows Mac系统。
- 下载
安装包的下载地址 https://golang.org/dl/ 打不开可以访问 https://golang.google.cn/dl/
- Windows安装
打开下载页面,选择最新版本

下载完成,双击.msi文件安装一路选择Next直到安装完成。
- Mac OS安装
打开下载页面,选择最新版本

下载完成,双击.pkg文件安装一路选择Next直到安装完成
- 验证安装
Windows下打开cmd窗口(win 键+ R,输入 cmd 回车),在cmd窗口中输入go命令回车后,显示如下结果:

第一个Go程序
在上面cmd窗口显示的目录中创建test.go文件,用文本编辑器打开,写入下面的代码
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
然后在cmd窗口中执行
go run test.go
返回如下所示:

Go开发工具
Go的开发工具很多,推荐用的比较多的是:
- Visual Studio Code 微软开源的免费代码编辑器,需要安装Go插件。
- GoLand GoLand是一个独立的IDE,专门用来开发Go功能十分强大,学生可以申请免费使用。
Visual Studio Code安装
打开 https://code.visualstudio.com/ 网站,下载安装Visual Studio Code,打开选择扩展搜索Go:

Go的100天之旅-01初识Go的更多相关文章
- TensorFlow --- 01初识
由于博客园对Markdown支持不够友好,阅读此文请前往云栖社区:TensorFlow --- 01初识
- day24 01 初识继承
day24 01 初识继承 面向对象的三大特性:继承,多态,封装 一.继承的概念 继承:是一种创建新类的方式,新建的类可以继承一个或者多个父类,父类又可称基类或超类,新建的类称为派生类或者子类 cla ...
- day22 01 初识面向对象----简单的人狗大战小游戏
day22 01 初识面向对象----简单的人狗大战小游戏 假设有一个简单的小游戏:人狗大战 怎样用代码去实现呢? 首先得有任何狗这两个角色,并且每个角色都有他们自己的一些属性,比如任务名字nam ...
- 081 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 06 new关键字
081 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 06 new关键字 本文知识点:new关键字 说明:因为时间紧张,本人写博客过程中只是 ...
- 080 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 05 单一职责原则
080 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 05 单一职责原则 本文知识点:单一职责原则 说明:因为时间紧张,本人写博客过程中只是 ...
- 079 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 04 实例化对象
079 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 04 实例化对象 本文知识点:实例化对象 说明:因为时间紧张,本人写博客过程中只是对知 ...
- 078 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 03 创建类
078 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 03 创建类 本文知识点:创建类 说明:因为时间紧张,本人写博客过程中只是对知识点的关 ...
- 077 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 02 类和对象
077 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 02 类和对象 本文知识点:类和对象 说明:因为时间紧张,本人写博客过程中只是对知识点 ...
- 076 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 01 Java面向对象导学
076 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 01 Java面向对象导学 本文知识点:Java面向对象导学 说明:因为时间紧张,本人 ...
随机推荐
- Tensorflow从0到1(4)之神经网络
一维数据集上的神经网络 # 1 引入包,创建会话 import tensorflow as tf import numpy as np sess = tf.Session() # 2 初始化数据 da ...
- List作为泛型参数实现可接收存储任意类型的List对象
原文链接:https://blog.csdn.net/eeeeasy/article/details/80999650?utm_source=blogxgwz2 在项目中遇到一个问题,想要封装一个通用 ...
- 【JMeter_05】创建第一个简单的接口脚本
聚合数据:提供了很多开放的API,可以去练习使用https://www.juhe.cn/ 如果有小伙伴对HTTP协议不是很了解,可以看下这里 http://home.ustc.edu.cn/~xie1 ...
- 【Spring】Bean的LifeCycle(生命周期)
菜瓜:水稻,上次说Bean的LifeCycle,还没讲完 水稻:啥?说人话? 菜瓜:spring,bean,生命周期 水稻:哦哦,下次直接说人话.说正事,先从BeanFactory.Applicati ...
- Java中时间处理
旧 API:位于 java.util 包中,里面主要有 Date.Calendar.TimeZone 类 新 API:位于 java.time 包中,里面主要有 LocalDateTime.Zoned ...
- C#数据结构与算法系列(十二):递归(Recursion)
1.介绍 简单的说:递归就是方法自己调用自己,每次调用时传入不同的变量,递归有助于编程者解决复杂的问题,同时也让代码变得整洁 2.规则 执行一个方法时,就创建一个新的受保护的独立空间(栈空间) 方法的 ...
- 明文暴露___JS前台加密,java后台解密实现
1.前台JS <script type="text/javascript"> $(function() { $("#btn").click(func ...
- vue全家桶(2.1)
3.路由切换 3.1.vue-router路由切换 3.1.1.什么是前端路由 路由这个概念最先是后端出现的,发送不同的请求,后端根据请求的不同返回不同的资源,这个时候的url是和后端交互的,需要在后 ...
- for循环里的break,continue和return有什么差别
break: 此语句导致程序终止包含它的循环,并进行程序的下一阶段(整个循环后面的语句),即,不是跳到下一个循环周期而是退出循环.如果break语句包含在嵌套循环里,它只跳出最里面的循环. 如下代码 ...
- 看完这篇Redis缓存三大问题,保你面试能造火箭,工作能拧螺丝。
前言 日常的开发中,无不都是使用数据库来进行数据的存储,由于一般的系统任务中通常不会存在高并发的情况,所以这样看起来并没有什么问题. 一旦涉及大数据量的需求,如一些商品抢购的情景,或者主页访问量瞬间较 ...