1.来源
Go语言是谷歌2009年发布的第二款开源编程语言
2.谷歌为什么要创建Go语言
- 计算机硬件技术更新频繁, 性能提高很快,默目前主流的编程语言发展明显落后于硬件,不能合理利用多核多CPU的优势提升软件系统性能
- 软件系统复杂度越来越高,维护成本越来越高,目前缺乏一个简洁而高效的编程语言.[现有语言:1.风格不统一 2.计算能力不够 3.处理大并发不够好]
- 企业运行维护很多c,c++的项目,c/c++程序运行速度虽然快,但是编译速度慢,目前还存在内存泄漏的一系列问题
针对上面的一系列问题,Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程,Go支持面向对象,而且具有真正的闭包(closures)和反射 (reflection)等功能,它有很多强大的功能,比如:内存安全,GC(垃圾回收),结构形态及 CSP-style 并发计算
3.Go语言的里程碑
2007年,谷歌工程师Ken Thompson、Rob Pike、Robert Griesemer开始设计一门全新的语言,这是Go语言的最初原型。
2009.11.10 ,Google将Go语言以开放源代码的形式向全球发布。
2015年8月19日 ,Go1.5版本发布,本次更新中移除了“最后残余的C代码”,请内存管理方面权威专家Rick Hudson对GC进行重新设计(重要的修正)
2017年2月16日 , Go1.8版本发布
2017年8月24日 , Go1.9版本发布
2018年2月16日 , Go1.10版本发布
2018年8月24日 , Go1.11版本发布
2019年2月25日 , Go1.12版本发布
2019年9月03日 , Go1.13版本发布
2020年2月25日 , Go1.14版本发布
2020年8月11日 , Go1.15版本发布
2021年2月16日 , Go1.16版本发布2021年8月16日, Go1.17版本发布
2022年3月15日, Go1.18版本发布
2022年8月02日, Go1.19版本发布
2023年2月02日, Go1.20版本发布
4.Go语言的特点
Go语言保证了既能达到静态编译语言的安全和性能,又达到了动态语言开发维护的高效率,使用一个表达式来形容Go: Go = C+ Python, 说明Go语言既有C静态语言的运行效率,又能达到Python动态语言的快速开发.并且Go语言除了OOP外,还对近年出现的一些小众的编程哲学思想有所吸收,例如,Go语言接受了函数式编程的一些想法,支持匿名函数与闭包,再如,Go语言接受了以Erlang语言为代表的面向消息编程思想,支持goroutine和通道,并推荐使用消息而不是共享内存来进行并发编程,总体来说,Go语言是一个非常现代化的语言,精小但非常强大,归纳总结如下:
(1).从C语言那里继承了很多理念,包括表达式语法,控制结构,基础数据类型,调用参数传值,指针
等,也保留了C语言一样的编译执行方法及弱化的指针.
(2).引入了包的概念,用于组织程序结构,Go语言的一个文件都要归属于一个包,而不能单独存在.
(3).垃圾回收机制,内存自动回收,不需要开发人员管理
(4).天然支持并发
- 从语言层次支持并发,实现简单
- goroutine,轻量级线程,可实现大并发处理,高效利用多核
- 基于CPS并发模型(Communicating Sequential Processes)实现
(5).吸收了管道通信机制,形成Go语言特有的管道channel,通过管道channel,可以实现不同的goroutine之间的相互通信
(6).函数返回多个值
(7).新的创新,比如:切片,延时执行defer等
用更简短的总结如下,Go 语言最主要的特性有:
- 自动垃圾回收
- 更丰富的内置类型
- 函数多返回值
- 错误处理
- 匿名函数和闭包
- 类型和接口
- 并发编程
- 反射
- 语言交互性
5.Go语言的用途
区块链应用
区块链技术简称BT(Blockchain technology)也被称为分布式账本技术,是一种互联网数据库技术,其特点是去中心化、公开透明,让每个人均可参与数据库记录
后端服务器应用(并发)
美团后台流量支撑程序,支撑主站后台流量(排序、推荐、搜索等),提供负载均衡、cache、容错、按条件分流,统计运行指标(qps、latency)等功能
Go语言被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言,对于高性能分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率,它提供了海量并行的支持,很适合游戏服务端的开发,包括游戏服务端通讯、逻辑和数据存储等架构
云计算和云服务开发
- 盛大云CDN(内容分发网络),包括CDN的调度系统、分发系统、监控系统、短域名服务,CDN内部开放平台、运营报表系统及其他一些小工具等
- 京东消息推送云服务(京东云),包括京东分布式文件系统,后台服务采用Go语言实现
6.go语言的开发工具以及安装和配置SDK
见[go学习笔记.第二章] 2.go语言的开发工具以及安装和配置SDK
好了,go语言的简单介绍就到这里了,更多Go语言相关知识:
Go语言基础:[go学习笔记.第二章] 1.go的概述
Gin框架开发:[golang gin框架] 1.Gin环境搭建,程序的热加载,路由GET,POST,PUT,DELETE
Beego框架开发:[Beego]1.Beego简介以及beego环境搭建,bee脚手架的使用,创建,运行项目
Go微服务开发:[golang 微服务] 1.单体式架构以及微服务架构介绍
流媒体在线直播系统:1.直播的简单介绍以及借助腾讯云直播实现在线直播
docker相关:[Docker]六.Docker自动部署nodejs以及golang项目
k8s相关:[Kubernetes]2. k8s集群中部署基于nodejs golang的项目以及Pod、Deployment详解