# Golang
# 什么是Golang
Golang是google开源的编译型编程语言,由于出现时间较晚,所以吸收了很多编程语言的优点。
# Go语言的诞生小故事
# 开发团队的三个大神
# Google创造Golang的原因
# Golang 的发展历程
发展历程
- 2007年,谷歌工程师RobPike,KenThompson和RobertGriesemer开始设计一门全新的语言,这是Go语言的最初原型。
- 2009年11月10日,Google将Go语言以开放源代码的方式向全球发布。
- 2015年8月19日,Go1.5版发布,本次更新中移除了”最后残余的C代码“
- 2017年2月17日,Go语言Go1.8版发布。
- 2017年8月24日,Go语言Go1.9版发布。1.9.2版本
- 2018年2月16日,Go语言Go1.10版发布。
- 2018年8月25日,Go语言Go1.11版发布。
- 2019年2月26日,Go语言Go1.12版发布。
- 2019年9月4日,Go语言Go1.13版发布。
# Golang的语言的特点
Go语言保证了既能到达静态编译语言的安全和性能,又达到了动态语言开发维护的高效率,使用一个表达式来形容Go语言:Go=C+Python,说明Go语言既有C静态语言程序的运行速度,又能达到Python动态语言的快速开发。
- 从C语言中继承了很多理念,包括表达式语法,控制结构,基础数据类型,调用参数传值,指针等等,也保留了和C语言一样的编译执行方式及弱化的指针
- 引入包的概念,用于组织程序结构,Go语言的一个文件都要归属于一个包,而不能单独存在。
- 垃圾回收机制,内存自动回收,不需开发人员管理
# 天然并发
重要特点
- 从语言层面支持并发,实现简单
- goroutine,轻量级线程,可实现大并发处理,高效利用多核。
- 基于CPS并发模型(CommunicatingSequentialProcesses)实现
- 吸收了管道通信机制,形成Go语言特有的管道channel通过管道channel,可以实现不同的goroute之间的相互通信
- 函数可以返回多个值.
- 新的创新:比如切片slice、延时执行defer
# Golang是否值得学习?
当然值得学习,如果你有精力的话。golang语言的发展前景目前完全不用担心,首先它是google开源的,google有一个专门的部门来维护它,并且在内部大量使用。golang社区非常活跃,代表了golang强大的生命力。
# 有哪些公司在使用Golang
国内使用Golang的公司
- 七牛云存储完全使用go语言实现其核心功能,创始人许式伟是国内最早使用go的人之一
- 阿里基础架构大量使用golang,比如他们在用golang写一个类似gitlab的东西
- 现在十分火的容器技术docker是使用go实现的
- 当下最流行的容器管理工具k8s也是基于go实现的,总之容器那套生态圈很多都是go实现 ……
# Golang主要应用场景是什么?
我见到的还是在基础架构方面用的比较多,golang因为是编译型语言,而且天生就是面向多CPU的,所以性能可以说非常好了,我司用golang写游戏服务器,性能杠杠的。其实go什么都能做,只是说适不适合做,我在下面说明。
# Go和其它语言对比:
根本不存在最好的编程语言,只有最合适的编程语言,有些说法大家想必经常听到,C/C++适用于高性能场景,python,php适用于快速开发和web开发。假如我们公司想做一个新游戏,应该用什么编程语言呢?按说游戏这种能性能要求还是比较高的,用c++? 用golang? 但是我们很多游戏都是用php写的。显然 php性能不一定是最好的,但是我们团队都最会写php代码,其它的语言没那么熟。性能不够,我们机器来凑,有钱任性。所以php在这种情况下就是最合适的语言。 大家知道豆瓣是用python写的,为什么呢?很重要一个原因是他们创始人团队很懂python。
# 应该学习哪种语言?
存在的,就是合理的,不合理的总会被淘汰的。一门语言不是万金油,适合做所有的事,很多时候一个程序是由很多语言完成的,学习一门语言要深入,要学以致用,语言只是工具,学会一门工具后,再多多练习内力(数据结构和算法等),以后学什么语言都快,万变不离其宗。