走 编程语言(也称为Golang)是Google的通用编程语言,专为当今计算机的多核现实而设计。 走 是一种像C ++这样的静态类型的编译语言,具有诸如Python这样的动态类型的解释型语言的用户友好性。 走 是并发的,垃圾收集的并且是按比例设计的,它是一种用于构建大型复杂软件的编程语言。
无论您是在相信摩尔定律已死的阵营中,还是您认为该定律仍然有战斗的机会,现实是我们生活在一个世界上,自英特尔®处理器以来,单核处理器的实际时钟速度没有太大变化奔腾4处理器早在2004年就达到了3.0 GHz。要在当今的设备中实现更高的性能,就需要多核体系结构,这种体系结构与80年代和90年代流行的C ++和Java首次出现时所使用的计算机完全不同。这是今天的旗舰版MacBook Pro 13能够以2.7 GHz的基本时钟速度运行的原因之一,它运行具有四个核心和八个线程的Intel®Core™i7-8559U处理器。
因此,正是在2007年末,Google的澳门永利在线播放人员构想了Go语言:一种用于多核处理器,云服务,计算集群和联网系统的语言,构成了现代IT基础架构的计算领域。 走 ogle的主要问题是程序员的生产力和规模-管理作为独立的网络计算集群处理的数百万台计算机中,用C ++,Python和Java等多种语言编写的无数行软件。如果您正在寻找一种旨在解决扩展时在复杂软件基础架构环境中遇到的问题的编程语言,那么Go是适合您的高性能系统语言。
走 的核心功能集
在我们深入研究具体细节之前,下面简要概述该语言必须提供的主要功能:
- 已编译。 走 会为您的应用程序生成具有所有依赖关系的二进制文件。无需解释程序或运行时安装。
- 垃圾收集。 运动型低延迟垃圾收集器可实现高效且并发的自动内存管理。
- 安全。 走 是一种支持类型安全的静态类型语言。错误在执行前由编译器捕获。
- 受C语言启发的语法。 走 的语法让人联想到C系列,但仅用25个关键字进行了简化,无需类型信息/符号表即可进行解析,并且具有类似Pascal的声明方案。
- 多范式。 走 支持多种编程范例,包括命令式,无继承的面向对象编程(OOP)和函数式编程。
- 标准库。 走 具有功能强大的软件包标准库,可支持Go程序的澳门永利在线播放。
- 简化的文档。 走 Doc是静态代码分析工具,可直接从您的代码创建简化的标准化文档。
- 同时。 走 将并发视为头等公民,我们将在下一部分中详细介绍。
走 routine和渠道:多核世界的并发
并发是一次处理大量事务的能力,例如处理多个请求的Web服务器。并发性对于构建可以充分利用多核或进程线程的性能的软件特别有用。 走 的最大卖点之一是,它支持两项使开箱即用的操作变得简单易用的功能:goroutines和channel。
走 routines是可以与其他方法和函数同时运行的函数。与并行性相反,在并行性中,函数可以同时执行,并发只是意味着程序无需等待函数完成即可继续执行下一个任务。虽然并行性当然是可能的,但这不是目标。并发与结构有关。
如果您熟悉Java中的线程,则goroutine更加轻便且易于创建。 走 routine是:
- 快速: 比传统线程更快的启动时间
- 轻巧: 堆栈大小只有几kB,使您可以运行数百万
- 灵活: 可扩展的分段堆栈,仅根据需要消耗内存
- 易于控制: 通道让两个或多个goroutine协调并同步其执行
使用“ go”关键字调用时,这些函数将在程序移至代码中的下一条语句时启动并继续运行,而不必等待goroutine完成。简而言之,Go使您可以轻松设计可在多个内核上同时运行的程序,从而充分利用硬件。观看Go联合创始人Rob Pike的视频,详细了解如何使用Go的并发模式创建高性能软件。
继承而不是继承
有时候,您可以通过其创建者选择忽略的功能来讲述多种语言。 走 通过选择组成而不是继承来偏离大多数OOP语言。除了允许子类和基于类型的继承外,Go还允许通过称为接口的漂亮构造来处理任何类型的方法。接口是一组方法:可以根据需要调用的固定行为。当类型实现其方法时,该接口将隐式实现-无需显式的意图声明。考虑哈希接口的标准库定义:
type Hash interface { Write(p []byte) (n int, err error)
|
满足上面的Hash接口的任何类型也将隐式满足下面的writer接口:
type Writer interface { Write(p []byte) (n int, err error)
|
请注意,这与类继承非常不同,在类继承中,子类依赖于父类。而是将重点放在方法上,可以简单地编写精确的接口定义并使用它们,而不必在每个实现中都进行查找和标记。由于在编译时会静态检查接口的满意度,因此所有内容都保持类型安全。以这种方式将意图与定义分离,可以使您的软件进行有机扩展,而不必担心在设计开始时添加的任何预定层次结构。这就是Google所说的Go表示合成而不是继承的意思。
用Go构建
为了给您一些现实的例子,介绍当今世界如何使用Go,下面是一些使用Go的工具和软件的例子:
- Kubernetes, 由Google支持的容器管理平台。
- ItsAbot, 构建自己的数字助理框架。
- CloudFlare, 内容交付网络,DDoS缓解措施和Internet安全服务。
- 大本营, 流行的项目管理套件。
- 投寄箱, 云存储和文件共享应用程序。
- 恶意软件字节, 防病毒软件。
走 已被采用来满足各种公司和工具的服务器端需求。尽管在Google上对Go的大多数使用都是保密的,但您可以打赌,该公司将充分利用其所使用的语言。
我应该在下一个项目中使用Go吗?
创建Go是为了解决“ 走 ogle大小”的问题。作为专门用于并发的通用语言,Go对于涉及分布式网络,云服务和其他复杂项目的项目特别有用。 后端技术。如果您的组织遇到了常见的可伸缩性问题,例如构建速度慢,依赖性不受控制,更新成本高昂,文档混乱以及编写自动化工具困难,那么Go可能是适合您的编程语言。