[喵咪Golang(1)]Go语言开篇

#[喵咪Golang(1)]Go语言开篇#

##前言##

哈喽大家好啊!喵咪我今天又来开坑了,最近学习和使用了go语言了一段时间,也在组合一些好的组件编写phalgo开发框架.在想是不是可以来写一个套关于go语言的文章和一些好的组件的介绍使用,虽然自己也是半桶水但是我相信在编写的过程中能给自己很多收获,最好也能帮助大家了解和熟悉golang这门语言,话不多说那么就开始今天的go语言之旅吧~

附上:

喵了个咪的博客:w-blog.cn

phalgo地址:github.com/wenzhenxi/phalgo

Go语言圣经:docs.ruanjiadeng.com/gopl-zh

##1. go语言的诞生

如果是计算机专业出生的童鞋都听过贝尔实验室一词,这就是诞生著名的UNIX系统和C语言的地方,经过了40年在同一个地方Google工作的Ken Thompson和Rob Pike还有Robert Griesemer一同设计了Go语言,目的是为了解决在21世纪多核和网络化环境下越来越复杂的编程问题.

Go语言是从Ken Thompson发明的B语言、Dennis M. Ritchie发明的C语言逐步演化过来的,是C语言家族的成员,因此很多人将Go语言称为21世纪的C语言。纵观这几年来的发展趋势,Go语言已经成为云计算、云存储时代最重要的基础编程语言。

就笔者玩了一段时间的感受,go语言是C语言的衍生有C语言的特色,毕竟被称为21世纪的C语言,并且go也从一些现代语言中吸收了很多优秀的地方,比如C语言不具备的GC机制,接口机制,还有很多新的特性,而且在编译时可以大幅缩短时间,相对于C++的十分之一

下图展示了有哪些早期的编程语言对Go语言的设计产生了重要影响。

go语言至今版本历史:

2007年,谷歌工程师Rob Pike, Ken Thompson和Robert Griesemer开始设计一门全新的语言,这是Go语言的最初原型。
2009年11月10日,Go语言以开放源代码的方式向全球发布。
2011年3月16日,Go语言的第一个稳定(stable)版本r56发布。
2012年3月28日,Go语言的第一个正式版本Go1发布。
2013年4月04日,Go语言的第一个Go 1.1beta1测试版发布。
2013年4月08日,Go语言的第二个Go 1.1beta2测试版发布。
2013年5月02日,Go语言Go 1.1RC1版发布。
2013年5月07日,Go语言Go 1.1RC2版发布。
2013年5月09日,Go语言Go 1.1RC3版发布。 
2013年5月13日,Go语言Go 1.1正式版发布。
2013年9月20日,Go语言Go 1.2RC1版发布。
2014年6月19日,Go语言Go 1.3版发布。
2015年8月20日,Go语言Go 1.5版发布,本次更新中移除了”最后残余的C代码”。
2016年1月07日,Go语言Go 1.6版发布, Go1.6开始全面支持 HTTP/2 大幅改善GC性能

2.go语言特性

go里面有很多有意思的特性,笔者根据自己使用和收集了以下几点:

  1. Go 语言是一门类型安全和内存安全的编程语言。虽然 Go 语言中仍有指针的存在,但并不允许进行指针运算
  2. Go 语言语法结构与动态语言的易开发性进行有机结合,开发效率和性能都比较平衡
  3. Go 语言的对于网络通信、并发和并行编程的极佳支持,从而更好地利用大量的分布式和多核的计算机
  4. Go 语言编译速度非常快一般只需要几百毫秒
  5. Go 语言自带GC垃圾回收机制来解决内存问题
  6. Go 语言语法干净、整齐和简洁,关键字的数量仅仅25个
  7. Go 语言没有类和继承的概念,所以它和 Java 或 C++ 看起来并不相同。但是它通过接口(interface)的概念来实现多态性。
  8. Go 语言支持交叉编译,比如说你可以在运行 Linux 系统的计算机上开发运行下 Windows 下运行的应用程序。

更具以上特性,相信大家对go的也有了一个抽象的定位了

3.go语言著名项目

###Docker

到现在,Docker几乎是Go再难找到也难以复制的一个成功案例。Docker项目在2014年9月份就拿到了C轮4000万美元融资,版本迭代速度超快,目前从GitHub看到已有78个版本,而它仅仅是再2013年初才正式开始的一个项目而已。

Docker团队之所以喜欢用Go语言,主要是Go具有强大的标准库、全开发环境、跨平台构建的能力。

GitHub托管地址: https://github.com/docker/docker

###Lime

Revel是一个高生产力的Go语言Web框架。Revel框架支持热编译,当编辑、保存和刷新源码时,Revel会自动编译代码和模板;全栈特性,支持路由、参数解析、缓存、测试、国际化等功能。

GitHub托管地址: https://github.com/revel/revel

###InfluxDB

一个Go语音编写的开源分布式的时序、事件和指标数据库,无需外部依赖。其设计目标是实现分布式和水平伸缩扩展。

GitHub托管地址: https://github.com/influxdb/influxdb

###Gogs

Gogs则是一款由国人无闻( GitHub)开发的自助Git服务项目。Gogs的目标是打造一个最简单、最快速和最轻松的方式搭建自助Git服务。据作者称,之所以选择使用Go语言开发,就是Go允许Gogs可以通过独立的二进制分发,且对跨平台有良好支持。

GitHub托管地址: https://github.com/gogits/gogs

##4. 总结##

我们回顾一下我们主要讲解了go语言的历史,它是一个什么样子的语言它的特性是怎么样的,有那些有名的开源项目,大家是不是对go语言充满了期待,也充满了疑惑呢,那么就请大家带着期待带着疑惑的心里,来进入下一篇的GO语言-安装与Helloworld篇吧!

注:笔者能力有限有说的不对的地方希望大家能够指出,也希望多多交流!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小白课代表

彻底摆脱二指禅!课代表带你练习正确的打字姿势!

还记得小学的时候,我们有一门微机课,大概就是教一下怎么开机关机,怎么打开软件,怎么打字之类的,印象最深的就是有一次,我们老师不让我们开机,让我们盯着键盘,盯着上...

48030
来自专栏杨建荣的学习笔记

从设计模式的设计原则感悟生活(r2笔记42天)

设计模式中的很多思想还是很有意思的,刚毕业的时候接触设计模式感觉有点高深,坐而论道,感觉还是有些虚,平时做的小练习还能自己捣鼓一番,自己使用一下设计模式,然后大...

34560
来自专栏Python小屋

Python批量合并带有合并单元格的Excel文件

问题描述:某老师为不同学院讲授“Python程序设计”课程,并根据不同专业和课程特点选用了董付国老师系列教材《Python程序设计(第2版)》《Python程序...

41240
来自专栏web前端教室

【Js结构】用vuejs做一个简陋但好使的播放器(二)

上一节写了做一个简陋的播放器,需要的大致的步骤,《【从零开始】用vuejs做一个简陋但好使的播放器(一)》。 其实就是简单的记了一下流水账,这一节咱们来“设计一...

22660
来自专栏编程微刊

2017年10大主流编程语言最新排行榜出炉

43530
来自专栏我的博客

面试和笔试汇总

最近忙着找工作,也没有更新博客,今天一个朋友让我赶紧把博客更新下,说说最近的面试情况也可以好给他们一个参考,这就整理出来给大家分享~~ 笔试题目公开 get和p...

47260
来自专栏数据科学与人工智能

【Python环境】Python 开发者节省时间的 10 个方法

Python 是一个美丽的语言,可以激发用户对它的爱。所以如果你试图加入程序员行列,或者你有点厌倦C++,Perl,Java 和其他语言,我推荐你尝试Pytho...

26770
来自专栏企鹅号快讯

毕业的大学生生、想转行的人或想学习编程的学Python、C 还是Java?

刚毕业的大学生生、想转行的人或想学习编程的朋友,应该挑选学习Python、C++还是Java?关于许多要面临就业的大学生、想转行找工作的人来说,零基础挑选学习哪...

308100
来自专栏SDNLAB

SDN实战团分享(二十):From Lithium to Beryllium,ODL最新动态变化

大家好, 感谢宇峰的邀请, 和大家分享OpenDaylight最新发布的一些进展,胶片主要来自Neela Jacques, Phil Robbs和Colin D...

28640
来自专栏java达人

如何编写复杂sql

经常有人问我那非常复杂的sql是怎么写出来的,我一直不知道该怎么回答。 因为虽然我写这样的sql很顺手,可是我却不知道怎么告诉别人怎么写。很多人将这个问题...

91590

扫码关注云+社区

领取腾讯云代金券