(1-1)Go语言基础:初步认识GO语言

Go是非常年轻的一门语言,它的主要目标是“兼具 Python 等动态语言的开发速度和C/C++等编译型语言的性能与安全性”。在本章的内容中,将详细讲解语言的发展历程,讲解搭建Go语言环境的方法,并详细讲解了开发第一个Go语言程序的过程。

1.1  初步认识GO语言

Go语言(或Golang)起源于2007年,并在2009年正式对外发布。在本节的内容中,将简要介绍Go语言的基本信息。

1.1.1  GO 语言介绍

Go语言是编程语言设计的又一次尝试,是对类C语言的重大改进,它不但能让你访问底层操作系统,还提供了强大的网络编程和并发编程支持。推出Go语言的目的是,在不损失应用程序性能的情况下降低代码的复杂性,具有“部署简单、并发性好、语言设计良好、执行性能好”等优势,目前国内诸多 IT 公司均已采用Go语言开发项目。

Go语言的用途众多,可以进行网络编程、系统编程、并发编程、分布式编程。Go语言有时候被描述为“C 类似语言”,或者是“21 世纪的C语言”。Go 从C语言继承了相似的表达式语法、控制流结构、基础数据类型、调用参数传值、指针等很多思想,还有C语言一直所看中的编译后机器码的运行效率以及和现有操作系统的无缝适配。

虽然Go语言没有类和继承的概念,但是它通过接口(interface)的概念实现多态性。Go语言拥有一个清晰易懂的轻量级类型系统,在类型之间也没有层级之说。因此可以说Go语言是一门混合型的语言。

如果你要创建系统程序,或者基于网络的程序,Go语言是很不错的选择。作为一种相对较新的语言,它是由经验丰富且受人尊敬的计算机科学家设计的,旨在应对创建大型并发网络程序面临的挑战。在Go语言出现之前,开发者们总是面临非常艰难的抉择,究竟是使用执行速度快但是编译速度并不理想的语言(如:C++),还是使用编译速度较快但执行效率不佳的语言(如:.NET、Java),或者说开发难度较低但执行速度一般的动态语言呢?显然,Go语言在这 3 个条件之间做到了最佳的平衡:快速编译,高效执行,易于开发。

最近几年,Go语言得到了飞速的发展,在现实中有很多重要的开源项目都是使用Go语言开发的,例如Docker、Go-Ethereum、Thrraform 和 Kubernetes等。

1.1.2  Go语言的发展历史

2007 年9 月20 日的下午,在谷歌山景城总部的一间办公室里,谷歌公司的大佬级程序员 Rob Pike1在等待一个 C++ 项目构建的过程中,和谷歌的另外两个大佬级程序员 Robert Griesemer2和 Ken Thompson3进行了一次有关设计一门新编程语言的讨论。从那时起,这三位谷歌工程师R开始设计一门全新的语言,这便是Go语言的最初原型。

2009年11月10日,Google将Go语言以开放源代码的方式向全球发布。

2015年8月19日,Go 1.5版发布,在本次更新中移除了”最后残余的C代码”

2017年2月17日,Go语言Go 1.8版发布。

2017年8月24日,Go语言Go 1.9版发布。

2018年2月16日,Go语言Go 1.10版发布。

……

2022 年3月,Go语言Go 1.18版发布,可以使用新的 Go 工作区模式解决了这个问题,使用多个模块将变得简单。

1.1.3  Go语言的特性

(1)语法简单

抛开语法样式不谈,只就类型和规则而言,Go语言与 C语言有很多相似之处,这也是Go语言被冠以“Nex tC”名号的重要原因。Go语言的语法规则严谨,没有歧义,更没什么黑魔法变异用法。任何人写出的代码都基本一致,这使得Go语言简单易学。放弃部分“灵活”和“自由”,换来更好的维护性是值得的。

(2)并发模型

时至今日,并发编程已成为程序员的基本技能,在各个技术社区都能看到诸多与之相关的讨论主题。Go语言在运行时用 Goroutine (是 Go语言中的轻量级线程实现)运行所有的一切,包括 main.main 入口函数。Goroutine 是 Go 最显著的特征。它用类协程的方式来处理并发单元,却又在运行时层面做了更深度的优化处理。这使得语法上的并发编程变得极为容易,无须处理回调,无须关注线程切换,仅一个关键字,简单而自然。

(3)内存分配

Go语言为并发操作设计了高性能的内存分配组件tcmalloc,为当前执行线程提供无锁分配,能够在多个不同线程间平衡内存单元复用。可以快速分配和二级内存平衡机制,让内存分配器能优秀地完成高压力下的内存管理任务。

在最近几个版本中,Go语言编译器的优化工作卓有成效。降低了垃圾回收压力,减少了管理消耗,提升了执行性能。除了偶尔因性能问题而被迫采用对象池和自主内存管理外,开发者基本无须参与内存管理操作。

(4)标准库

功能完善、质量可靠的标准库为编程语言提供了充足动力。在不借助第三方扩展的情况下,Go语言通过内置标准库就可完成大部分基础功能开发,这大大降低了学习和使用成本。最关键的是,标准库有升级和修复保障,还能从运行时获得深层次优化的便利,这是第三方库所不具备的。并且在近年来,大批基于此的优秀第三方 Framework(库) 更是将 Go 推到 Web/Microservice 开发标准之一的位置。

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农三叔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值