首页 > 其他分享 >Go 语言概述

Go 语言概述

时间:2023-09-29 10:01:40浏览次数:28  
标签:内置 语言 编程语言 类型 概述 Go 贝尔实验室

本文主要包含以下内容:

  • 为什么需要一门新的语言
  • Go 语言基本介绍
  • Go 的发展历程
  • Go 应用领域

o 语言基本介绍

在上述背景下,谷歌公司于 2009 年推出了新一代的编程语言 Go

提起 Go 语言的出身,我们就必须将我们饱含敬意的眼光投向持续推出惊世骇俗成果的贝尔实验室。

贝尔实验室已经走出了多位诺贝尔奖获得者,一些对于现在科技至关重要的研究成果,比如晶体管、通信技术、数码相机的感光元件 CCD 和光电池等都源自贝尔实验室。该实验室在科技界的地位可想而之,是一个毫无争议的科研圣地。

这里我们重点介绍一下贝尔实验室中一个叫计算科学研究中心的部门对于操作系统和编程语言的贡献。

回溯至 1969 年,肯.汤姆逊(Ken Thompson)和丹尼斯.里奇(Dennis Ritchie)在贝尔实验室的计算科学研究中心里开发出了 Unix 这个大名鼎鼎的操作系统,还因为开发 Unix 而衍生出了一门同样赫赫有名的编程语言:C 语言。

然已经取得了如此巨大的成就,贝尔实验室的这几个人并没有因此而沉浸在光环中止步不前,他们从 20 世纪 80 年代又开始了一个名为 Plan 9 的操作系统研究项目,目的就是解决 Unix 中的一些问题,发展出一个 Unix 的后续替代系统。

在之后的几十年中,该研究项目又演变出了另一个叫 Inferno 的项目分支,以及一个名为 Limbo 的编程语言。

Limbo 是用于开发运行在小型计算机上的分布式应用的编程语言,它支持模块化编程,编译期和运行时的强类型检查,进程内基于具有类型的通信通道,原子性垃圾收集和简单的抽象数据类型。它被设计为:即便是在没有硬件内存保护的小型设备上,也能安全运行。

Limbo 语言被认为是 Go 语言的前身,不仅仅因为是同一批人设计的语言,而是 Go 语言确实从 Limbo 语言中继承了众多优秀的特性。

贝尔实验室后来经历了多次的动荡,包括肯.汤姆逊在内的 Plan 9 项目原班人马加入了 Google。在 Google,他们创造了 Go 语言。

Go 语言作为一门全新的静态类型开发语言,与当前的开发语言相比具备众多令人兴奋不已的新特性。

有人形容 Go 语言为 Go = C + Python,说明 Go 语言既有 C 静态语言程序的运行速度,又能达到 Python 动态语言的快速开发。Go 语言最主要的特性:

  • 自动垃圾回收
  • 更丰富的内置类型
  • 函数多返回值
  • 错误处理
  • 匿名函数和包
  • 类型和接口
  • 并发编程
  • 反射
  • 语言交互性

针对上面所列举的诸多特性,这里简单介绍几个:

1. 自动垃圾回收

C/C++ 最头疼的就是指针问题,一不小心就野指针了或者又越界了。在 Go 语言里再也不用担心,也不用考虑 delete 或者 free,系统自动会回收。

2. 函数可以返回多个值

这个很神奇,大多数语言只能返回一个值,Go 语言可以返回多个值。这个功能使得开发者再不用绞尽脑汁的想到底怎么返回值的设计,也不用为了传值专门定义一个结构体。

3. 并发编程

Go 语言天然并发,只需要关键字 go 就可以让函数并发执行,使得并发编程变得更为简单,这也是 Go 语言最大的优势。

4. 更丰富的内置类型

除了几乎所有语言都支持的简单内置类型(比如整型和浮点型等)外,Go 语言也内置了一 些比较新的语言中内置的高级类型,比如 C#Java 中的数组和字符串。除此之外,Go 语言还内置了一个对于其他静态类型语言通常用库方式支持的字典类型 map

Go 语言设计者对为什么内置 map 这个问题的回答也颇为简单:既然绝大多数开发者都需要用到这个类型,为什么还非要每个人都写一行 import 语句来包含一个库?

这也是一个典型的实战派观点,与很多其他语言的学院派气息迥然不同。

另外有一个新增的数据类型:数组切片 Slice。我们可以认为数组切片是一种可动态增长的数组。这几种数据结构基本上覆盖了绝大部分的应用场景。


当然,关于 Go 语言的语言特性,还有很多很多,这里不做一一解释。在后面学习到对应新特性时,自然会有更深的体会。

Go 应用领域

那么,Go 语言具体能做什么样的开发呢?或者说有着什么样的应用场景呢?

由于 Go 语言,具备了 Python 的简易性和传统 C++Java 的性能,可帮助开发人员构建可伸缩的应用程序,它的应用场景横跨目前互联网中非常热门的几个领域,比如分布式/云计算、微服务、大数据、区块链、大型游戏服务端开发和物联网等。

下面列举几个 Go 语言常见的应用领域。

除了上面介绍的这些,其实很多领域都能看到 Go 的影子。例如直播领域、游戏开发、AI 算法等等。在这其中 Go 为后台的调度系统、任务处理、批量的数据计算、系统监控等都提供了各种优秀的解决方案。


标签:内置,语言,编程语言,类型,概述,Go,贝尔实验室
From: https://blog.51cto.com/u_15638932/7648007

相关文章

  • 【代码分享】如何用go语言做一个简单的爬虫工具
    之前跟大家分享过一个简单的php做的爬虫,今天给大家带来一个使用golang来制作的一个简单的爬虫工具!大家看在中秋节我还更文的份上大家多评论转发收藏一下哟~也祝大家中秋节快乐安康~*使用colly来做一个简单的爬虫#安装collygogetgithub.com/gocolly/colly编写代码package......
  • Go - Simplifying Repetitive Error Handling
    Problem: Youwanttoreducethenumberoflinesofrepetitiveerror-handlingcode.Solution: Usehelperfunctionstoreducethenumberoflinesofrepetitiveerror-handlingcode. OneofthemostfrequentcomplaintsaboutGo’serrorhandling,especi......
  • Go - Using Multiple Versions of the Same Dependent Packages
    Problem: Youwanttousemultipleversionsofthesamedependentpackagesinyourcode.Solution: Usethereplacedirectiveinthego.modfiletorenameyourpackage.Thoughitmightseemlikeaverynicherequirement,thereissometimesaneedtobeabl......
  • Go - Requiring Local Versions of Dependent Packages
    Problem: Youwanttouselocalversionsofthedependentpackages.Solution: SetupGotouseavendordirectorybyrunninggomodvendor.Localversionsarethespecificversionofthedependentpackagesthatyoucanuseandareasafeguardincasethe......
  • Mac部署Python语言json模块(Anaconda)
      本文介绍在Mac电脑的Anaconda环境中,配置Python语言中,用以编码、解码、处理JSON数据的json库的方法;在Windows电脑中配置json库的方法也是类似的,大家可以一并参考。  JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,常用于数据的序列化和传输。而Python中的json库,......
  • Python语言特色与版本演进
    1.2.1Python的优点1.集成性Python最令人无法拒绝的优点是开发效率高,这主要归功于其本身具有高度的集成性。Python除了本身具有功能丰富的标准库外,使用他人写好的第三方库也十分方便。2.优雅美观Python使用缩进表征代码段的逻辑结构,而不是使用大括号,这一优点极大地增......
  • Python与大数据概述
    1.1.1Python概述Python是一种条理清晰、语法优美的面向对象型程序设计语言,同时,它也是一门解释型的高级语言。Python的设计哲学强调代码的可读性和语法的简洁(尤其是使用空格缩进划分代码块,而非使用大括号或者关键词)。1.1.2Python的设计哲学——Python之禅Python的设......
  • 实验1 C语言输入输出和简单程序的编写
    #include<stdio.h>intmain(){printf("0\n");printf("<H>\n");printf("II\n");return0;}#include<stdio.h>intmain(){printf("0\n");printf("<H>\n"......
  • Golang的测试、基准测试和持续集成
    在Golang中,内置的垃圾回收器处理内存管理,自动执行内存分配和释放。单元测试是软件开发中至关重要的一个方面,它确保了代码的正确性并在开发过程中尽早发现错误。在Go中,编写有效的单元测试非常简单,并为开发人员提供了对其代码的信心。在本文中,我们将探讨在Go中编写单元测试的最佳实......
  • Kali Linux 2023.3 修改系统语言
    dpkg-reconfigurelocales找到 en_US.UTF-8UTF-8 改为不勾选使用空格勾选[]zh-CN.UTF-8.UTF-8按下enter 表示ok,选择语言zh_CN.UTF-8重启生效设置,重启后会有个提示,选择更新名称......