当前位置: 首页 > news >正文

开源 12 年后,Go 语言成为一刀流剑客

029ac26a4802b9794dfe0d272123006f.gif

整理 | 王启隆

出品 | CSDN博客

Go语言又称Golang,是谷歌(Google)开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。Go是基于Inferno操作系统(Plan 9 的接替者)开发的,其诞生源于谷歌内部存在的一些编程语言遗留问题。

最初的开发者包括罗伯特·格瑞史莫、罗伯·派克和肯·汤普森。其中罗伯特·格瑞史莫(Robert Griesemer)还曾参与V8 JavaScript引擎代码生成,Sawzall和 Java HotSpot的虚拟机设计与实现等。

4e2d45c65c9df0ed8731aee84c659c0d.png

2007年,Google设计Go,目的在于提高在多核、网络机器(Networked Machines)、大型代码库(Codebases)的情况下的开发效率。当时在 Google,设计师们想要解决其他语言使用中的缺点,但是仍保留他们的优点,并且以“不要像 C++”为主要目标。

2009年11月10日,Go语言以开源方式向全球发布,距今已有12年。

Go语言的语法接近C语言,但对于变量的声明有所不同,支持垃圾回收功能;Go的并行计算模型是以东尼·霍尔的通信顺序进程(CSP)为基础,采取类似模型的其他语言包括Occam和Limbo,Go也具有这个模型的特征,比如通道传输。与C++相比,Go并不包括如枚举、异常处理、继承、泛型、断言、虚函数等功能,但增加了切片型、并发、管道、垃圾回收功能、接口等特性的语言级支持。

Go用批判吸收的眼光,融合C语言、Java等众家之长,将简洁、高效演绎得淋漓尽致;在十年多的时间里,Go语言发展势头强劲,凭借其简洁、高效的特性,在竞争激烈的编程语言市场中占据了一席之地。

与Java、Rust等语言不同,Go语言风格自成一派,它不太需要什么高并发框架,因为Go语言自身就是一个非常强大的高并发框架。Go语言给人的第一印象是非常的极致,它对于代码简洁性的要求非常严格,代码中用不到的Package严禁import,用不到的变量也要求强制删除。

Go语言的优秀范例很多,Docker、K8s、TiDB、BFE等等不胜枚举,即便不参考这些成功的开源项目,仅仅依靠官方给出的示范,也能让一行简单的Go语句表现出技惊四座的性能。在限定代码行数的情况下,Go语言的表现应该是所有框架中最好的

使用Go语言让程序员可以轻而易举的开发出一款性能强劲的应用程序,而恰恰是这种简单、易用的特性,也会让很多开发者误以为程序的效率卓越是自身编码实力的体现。Go语言想用好简单,但要用精、用到极限却很难,它和一刀流这种东洋剑术门派很像,入门简单,成型快速,但想成为绝顶高手,要走的路其实也是一样漫长。

如今,Google、腾讯、阿里等大公司纷纷选择使用Go语言来开发服务应用项目。你对Go了解多少?

RECOMMEND

推荐阅读

a86a968eb59fd99640e497327e7b09c3.png

01

《Go程序设计语言》

acf77a59e854106ae16377be1f987814.png

经典与权威的碰撞,打造Go语言编程圣经

作者:[美] 艾伦 A. A. 多诺万(Alan A. A. Donovan)

布莱恩 W. 柯尼汉(Brian W. Kernighan)

译者:李道兵 高博 庞向才 金鑫鑫 林齐斌 

推荐阅读

《C程序设计语言》作者Kernighan教授与谷歌Go开发团队核心成员Donovan联合编写。凝聚大师毕生造诣,融合Go开发团队智慧,经典与权威的碰撞,打造Go语言编程圣经。学习Go语言程序设计的权威指南。

150182258d0e6ba8bd5dcf6434e4baab.png

02

《Head First Go语言程序设计》

97f6298eb418faeb2dae26037965ce07.png

Head First系列又一力作,零基础学Go语言不再枯燥

作者:[美] 杰伊·麦克格瑞恩(Jay McGavren)

译者:刘红泉、王佳

推荐阅读

通过这本图文并茂的使用指南,你将会了解到企业希望入门级Go开发人员所知晓的惯例和技术。本书包含语法基础、条件和循环、函数、包、数组、映射、结构、封装和嵌入、接口、故障恢复、共享、自动化测试、Web应用程序等。

06ff1a7540db28f4f629d4d27efe6c10.png

03

《Go微服务实战》

38e8cfe7202bdabceff181ae0afd4815.png

给小白的Go语言微服务实战手册

作者:刘金亮

推荐阅读

以实践的角度全方位介绍如何通过Go语言实现微服务模式,书中包含大量案例、代码注释详细、理论解释形象。本书面向所有工程师,即便是没有Go语言基础的Java、PHP、Python工程师也可以直接上手使用,书中对Go语言进行了全面精炼的介绍。

3267e4944ef63f428b9fab8a5ecf0cff.gif

95dcd93ae4dd21c7fd7ab9b8638b1862.png

扫码关注【华章计算机】视频号

每天来听华章哥讲书

e2c919dcb46fc86b009ad7ea0278a06b.gif

更多精彩回顾

书讯 | 11月书讯(上)| 拿下这些新书,赢在起跑线

书讯 | 11月书讯(下) | 拿下这些新书,赢在起跑线

资讯 | 什么是ETL?一文掌握ETL设计过程

书单 | 8本书助你零基础转行数据分析岗

干货 | 一文读懂逻辑门

收藏 | 盘点云原生的5大特征

上新 | 【新书速递】产品经理应该知道的72件事

赠书 | 数据大牛都在啃的15本书

2f0e5793cf3a249a0695f53260349f9c.gif

86be3e8850613f88f262973abebdea6d.gif

点击阅读全文购买

相关文章:

  • 被 CSAPP 虐了!
  • 7张图揭晓RocketMQ存储设计的精髓
  • 看漫画来告诉你:什么是 “元宇宙” ?
  • 【第80期】浅谈如何成为技术一号位?
  • SpringBoot 实战:加载和读取资源文件内容
  • 终于有人把云计算与数据库的关系讲明白了
  • 为什么 Rust 是编程的未来?
  • 四种代码洁癖类型,程序员看了直呼内行
  • JavaScript成最受欢迎的编程语言,社区规模近 1650 万
  • 微软不会放弃Electron:Electron 快速入门及IPC 通信
  • 什么是边缘计算?它是怎样火起来的?终于有人讲明白了
  • 进阶必看的 RocketMQ ,就这篇了
  • 深度解析用户画像标签体系构建方法
  • 【第81期】4道题测试一下,你适不适合做产品经理
  • 【新书速递】你不知道的LevelDB
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  • cookie和session
  • echarts的各种常用效果展示
  • GitUp, 你不可错过的秀外慧中的git工具
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • IP路由与转发
  • Java Agent 学习笔记
  • Js基础——数据类型之Null和Undefined
  • Objective-C 中关联引用的概念
  • php面试题 汇集2
  • Promise初体验
  • SpiderData 2019年2月25日 DApp数据排行榜
  • Webpack 4x 之路 ( 四 )
  • win10下安装mysql5.7
  • 前端js -- this指向总结。
  • 前端之React实战:创建跨平台的项目架构
  • 使用 QuickBI 搭建酷炫可视化分析
  • 通过git安装npm私有模块
  • 赢得Docker挑战最佳实践
  • puppet连载22:define用法
  • shell使用lftp连接ftp和sftp,并可以指定私钥
  • ###STL(标准模板库)
  • (23)Linux的软硬连接
  • (4) PIVOT 和 UPIVOT 的使用
  • (第61天)多租户架构(CDB/PDB)
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • (转)PlayerPrefs在Windows下存到哪里去了?
  • (转)甲方乙方——赵民谈找工作
  • .NET6使用MiniExcel根据数据源横向导出头部标题及数据
  • .netcore 获取appsettings
  • .NET企业级应用架构设计系列之结尾篇
  • @Autowired多个相同类型bean装配问题
  • [ C++ ] 继承
  • [ Linux Audio 篇 ] 音频开发入门基础知识
  • [ 数据结构 - C++]红黑树RBTree
  • [4.9福建四校联考]
  • [Android 13]Input系列--获取触摸窗口