前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[喵咪Golang(1)]Go语言开篇

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

作者头像
喵了个咪233
发布2018-03-02 11:33:26
9540
发布2018-03-02 11:33:26
举报

#[喵咪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语言至今版本历史:

代码语言:javascript
复制
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篇吧!

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2.go语言特性
  • 3.go语言著名项目
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档