golang语言

最近,笔者开始使用golang语言。感觉golang是一门很有前途的语言。这不仅仅是因为golang是由大牛们打造出来的。更因为golang语言的特性。最近文章会开始介绍golang语言。

golang历史

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版发布。

设计者包括Robert Griesemer,Rob Pike和Ken Thompson,后来Ian Lance Taylor实现了基于GCC的go编译器gccgo,Russ Rox的加入推动了语言和库的实际可用性。

简介

Go语言是Google于2009年推出的静态编译型语言,旨在为开发人员提供类似Python,Ruby一样简洁的语言环境,同时又具备C/C++一样的运行效率。作为一个开源项目,在过去的两年多时间里,Go以社区协作的形式,不断地完善语言和标准库的设计与实现。2012年3月28日发布了第一个稳定的发行版本:Go version 1,简称Go1。

Go 1的推出,意味着Go语言和它的标准库已经进入了一个稳定阶段。对于谨慎的开发人员来说,开发Go程序正趁当下,现在已经可以放心地开发Go程序,不必再考虑未来语法和标准库的变化。

Go的基本设计理念是:编译效率,运行效率和开发效率要三者兼顾。使用Go开发,要让开发人员感觉到Python的便利,C/C++的运行效率,以及小到可以被忽略的编译时间。为了实现这个理念,形成了Go语言的以下几个特性:

  • 编译,静态类型语言。由此可以提供满足对运行效率敏感的系统级应用。

  • 垃圾回收,去除复杂的内存释放工作。

  • 简洁的符号和语法,极力减少开发人员输入的字符数。

  • 平坦的类型系统,去除了复杂的继承关系。使用结构化类型系统(Structural type system),既简化了事前设计工作,也为未来增加抽象层提供了非侵入式的解决方法。

  • 基于CSP模型的并行,简化了并发结构之间的通信和数据共享。为多核时代的程序开发打好基础。

  • 比线程更轻量的goroutine,让一个线程可以执行多个并发结构。不必使用异步通信,就足以达到线程池与select/poll/epoll的效果。极大简化了多连接的开发。

  • 使用一套简单的规范,开发人员不必再单独编写脚本指定依赖关系和编译流程。仅仅使用代码本身和go工具链,就可以处理各种依赖关系。写完代码,一条命令,自动下来各种依赖,直接编译/安装。无需make,autoconf,automake,setup.py等工具支持。

后续文章将会详细讲解golang语言特性。


大牛介绍

Robert Griesemer参与设计Chrome浏览器中的Javascript执行引擎V8,V8采用即时编译技术和分代(generational)的stop-the-world垃圾收集机制;

Rob Pike乃大名鼎鼎的人物,曾在贝尔实验室工作,是Unix操作系统、Plan9操作系统、Limbo编程语言和UTF-8编码的主要设计者,写过愤青式的文章Systems Software Research is Irrelevant,还有两本书The Unix Programming Environment和The Practice of Programming;

Ken Thompson是图灵奖获得者,是Unix操作系统、Plan9操作系统、UTF-8编码和B编程语言(C的前身)的创立者之一。在google,Ken和Robert还设计过过用于大规模数据分析的Sawzall语言;

Ian Lance Taylor是GCC社区的超级活跃人物,是gold连接器和GCC过程间优化LTO的主要设计者之一,是Zembu公司的创始人之一。


欢迎关注微信公众号:码术(codemanship)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


类型转换 1、int转string 2、string转int 3、string转float 4、用户结构类型转换
package main import s "strings" import "fmt" var p = fmt.Println func main() { p("Contains: ", s.Contains("test&quo
类使用:实现一个people中有一个sayhi的方法调用功能,代码如下: 接口使用:实现上面功能,代码如下:
html代码: beego代码:
1、读取文件信息: 2、读取文件夹下的所有文件: 3、写入文件信息 4、删除文件,成功返回true,失败返回false
配置环境:Windows7+推荐IDE:LiteIDEGO下载地址:http://www.golangtc.com/downloadBeego开发文档地址:http://beego.me/docs/intro/ 安装步骤: 一、GO环境安装 二、配置系统变量 三、Beego安装 一、GO环境安装 根
golang获取程序运行路径:
Golang的文档和社区资源:为什么它可以帮助开发人员快速上手?
Golang:AI 开发者的实用工具
Golang的标准库:为什么它可以大幅度提高开发效率?
Golang的部署和运维:如何将应用程序部署到生产环境中?
高性能AI开发:Golang的优势所在
本篇文章和大家了解一下go语言开发优雅得关闭协程的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。1.简介本文将介绍首先为什么需要主...
这篇文章主要介绍了Go关闭goroutine协程的方法,具有一定借鉴价值,需要的朋友可以参考下。下面就和我一起来看看吧。1.简介本文将介绍首先为什么需要主动关闭gor...
本篇文章和大家了解一下go关闭GracefulShutdown服务的几种方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。目录Shutdown方法Regi...
这篇文章主要介绍了Go语言如何实现LRU算法的核心思想和实现过程,具有一定借鉴价值,需要的朋友可以参考下。下面就和我一起来看看吧。GO实现Redis的LRU例子常
今天小编给大家分享的是Go简单实现多租户数据库隔离的方法,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会...
这篇“Linux系统中怎么安装NSQ的Go语言客户端”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希
本文小编为大家详细介绍“怎么在Go语言中实现锁机制”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么在Go语言中实现锁机制”文章能帮助大家解决疑惑,下面...
今天小编给大家分享一下Go语言中interface类型怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考