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面向对象导学 说明:因为时间紧张,本人 ...
随机推荐
- Android选项卡学习
什么是选项卡 顶部的导航条就是选项卡了. Android开发中添加选项卡的步骤 图片不太懂上代码: activity_main.xml <?xml version="1.0" ...
- 这一次搞懂Spring自定义标签以及注解解析原理
前言 在上一篇文章中分析了Spring是如何解析默认标签的,并封装为BeanDefinition注册到缓存中,这一篇就来看看对于像context这种自定义标签是如何解析的.同时我们常用的注解如:@Se ...
- c++逻辑与或非优先级
按优先级从高到低排列:!.&&.||,!的优先级最高,&&的优先级居中,||的优先级最低.
- rust 编码模式
➜ hello_cargo git:(master) ✗ rustc --print code-models Available code models: small kernel medium la ...
- cb19a_c++_只适合string类型的操作_提取_追加_替换
*cb19a_c++_只适合string类型的操作_提取_追加_替换三个substr重载函数-获取一个字符串的一部分六个append重载函数-追加字符十个replace重载函数-替换更换 重载函数越多 ...
- cb04a_c++_数据结构_STL_queue队列-一般用来做系统软件开发
/*cb04a_c++_数据结构_STL_queue队列-一般用来做系统软件开发队列(只能两端数据)与堆栈(只能一端操作数据)都没有迭代器.,队列:FIFO先进先出自适应容器(容器适配器)栈适配器ST ...
- WeChair项目Beta冲刺(9/10)
团队项目进行情况 1.昨日进展 Beta冲刺第九天 昨日进展: 项目开始扫尾 2.今日安排 前端:前端工作已经完成 后端:扫码占座后端测试,实现对超时预约座位下座的功能 数据库:和后端组织协商扫 ...
- Lucene5多条件查询
lucene是一个很强大的搜索工具,最近公司项目上用到,结合JAVA1234所讲,对多条件查询做出总结 先描述一下我的多条件需求,如果和您的类似,继续往下看. 1.我的Lucene搜索会在很多地方使用 ...
- docker 镜像删除
(我们以删除 php-fpm 这个镜像为例子) 一.查看镜像的 ID [root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED ...
- 调用php命令出错
调用php -v命令.php artisan route:list等命令均出现一下错误. MIB search path: c:/usr/share/snmp/mibsCannot find modu ...