首页 > 区块链 > 「链块技术09期」区块链基础语言——Go语言简介
中心科技  

「链块技术09期」区块链基础语言——Go语言简介

摘要:go 区块链一、什么是Go语言Go语言,也叫作Golang,它是21世纪的C语言。Go语言让程序员在写代码过程中更加高效,而且它优化了多处理器系统的应用程序,使其可以媲美C或C++代码程序的速度。另外,它更加安全地支持并行进程。项目选择语言时,开发人员只能在程序地快速开发和程序的性能之间二选一。例如
「链块技术09期」区块链基础语言——Go语言简介

一、什么是Go语言

Go语言,也叫作Golang,它是21世纪的C语言。Go语言让程序员在写代码过程中更加高效,而且它优化了多处理器系统的应用程序,使其可以媲美C或C++代码程序的速度。另外,它更加安全地支持并行进程。

项目选择语言时,开发人员只能在程序地快速开发和程序的性能之间二选一。例如:C和C++这类语言性能好,而Ruby和Python这类语言则擅长快速开发。而Go语言在这两者之间架起了桥梁,不仅提供了高性能的语言,同时也让开发更加快速。

总得来说,Go语言是一门编译型的系统编程语言,具有静态编译语言的高性能和动态语言的高效开发双重特点。

二、Go语言的演变历史

2007年google内部项目

Go作为一个20%项目开始研发,即让员工抽出本职工作之外时间的20%投入在该项目上。谷歌首席软件工程师Rob Pike说:我们之所以开发Go,是因为过去10多年间软件开发的难度令人沮丧。

2008年3月

第一版语言规范起草。

2009年11月10日

Go语言正式成为开源编程语言家庭的一员。

2015年8月19日

Go 1.5版发布,移除了“最后残余的C代码”。

2018年2月16日

Go 1.10版发布。

三、Go语言特性

自动垃圾回收

在Go语言中,系统会自动判断何时需要释放之前分配的内存空间,并在CPU相对空闲时对不使用的内存进行收集。

丰富的内置类型

在Go语言中,内置类型包含:整型,浮点型,数组,字符串,字典map,切片slice。

因为语言的内置特性,开发者不用添加依赖的包,让代码更简洁。

函数多返回值

Go语言是静态开发语言中率先提供多返回值功能的语言。如果开发者只关心函数中的某几个返回值,可以直接使用下划线作为占位符忽略其他不关心的返回值。

异常处理

异常处理涉及3个关键字:error、panic和recover。其中error报告程序中的普通错误,panic报告程序中的致命性错误,而recover可以让程序从panic状态中恢复。

匿名函数与闭包

匿名函数就是没有定义函数名的一种函数。而在Go语言中,闭包就是匿名函数,它可以通过匿名函数“捕获”和它在同一作用域的其它常量和变量。

结构体

结构体是一系列具有相同或不同类型的数据构成的数据集合。例如,可以利用结构体定义一个学生的学号/姓名/性别/年龄等属性。

接口

接口是具体描述一系列方法的集合。例如,可以利用接口将一个人的说、唱这些行为集中到一起。

并发编程

并发编程,就是在同一时刻只能有一条指令执行,但多个进程指令被快速的轮换执行,使得在宏观上具有多个进程同时执行的效果,但在微观上并不是同时执行的,只是把时间分成若干段,使多个进程快速交替的执行。如图1所示。

Golang从语言级别上对并发提供了支持,goroutine是Go并发设计的核心,而goroutine就是Go语言实现的协程。在Go程序里,只需要在函数调⽤语句前添加关键字“go”,就可创建并发执⾏单元。

「链块技术09期」区块链基础语言——Go语言简介

反射功能

反射是通过reflect包实现的,reflect包定义了两种反射类型:Type和Value。通过反射机制,可以获取接口变量存储的类型以及相应的值。

四、Go语言目前的实际应用

已用Go开发服务端的著名企业

▪ 谷歌——Youtube后台服务端程序

▪ 盛大——盛大云计算

▪ 小米——小米抢购系统、日志平台

dotCloud——Docker

五、Go语言资源和学习资料

5.1 go语言项目资源

▪ 爱好者开发的Go论坛及博客

▪其它海量开源项目网站:go-wiki、Go Walker、Go Language Resources

5.2 go语言学习资料

▪ Go语言官网:https://golang.org

▪ go中文社区:https://studygolang.com

▪ go中文在线文档:https://studygolang.com/pkgdoc

参考资料

[1] 许式伟,吕桂华.Go语言编程[M].北京:人民邮电出版社,2012:2-10.

-END-

链块学院区块链系列网课已上线

学习路径已为您规划好

离区块链工程师就差这一张图的距离了

「链块技术09期」区块链基础语言——Go语言简介

附上链块学院网课学习平台链接:http://wk.liankuai.tech/

助教卫星:lkxy007

免责声明
世链财经作为开放的信息发布平台,所有资讯仅代表作者个人观点,与世链财经无关。如文章、图片、音频或视频出现侵权、违规及其他不当言论,请提供相关材料,发送到:2785592653@qq.com。
风险提示:本站所提供的资讯不代表任何投资暗示。投资有风险,入市须谨慎。
世链粉丝群:提供最新热点新闻,空投糖果、红包等福利,微信:juu3644。