从零基础学Go(一)——Go的初识与安装

前世今生🪪

Go 是非常年轻的一门语言,它的主要目标是“兼具 Python 等动态语言的开发速度和 C/C++ 等编译型语言的性能与安全性”。

谷歌工程师的20%时间

谷歌的“20%时间”工作方式,允许工程师拿出20%的时间来研究自己喜欢的项目。语音服务Google Now、谷歌新闻Google News、谷歌地图Google Map上的交通信息等,全都是20%时间的产物。

Go语言最开始也是20%时间的产物。

诞生时间

Go语言(也称为Golang)的诞生可以追溯到2007年,于 2009 年正式对外发布。它从 2009 年 9 月 21 日开始作为谷歌公司 20% 兼职项目,即相关员工利用 20% 的空余时间来参与 Go 语言的研发工作。由谷歌的三位资深工程师——罗伯特·格里斯莫(Robert Griesemer)、罗布·派克(Rob Pike)和肯·汤普逊(Ken Thompson)共同设计开发。这个项目始于他们对当时编程语言和软件开发工具的种种不满,希望创造一个能够更好地应对大型软件开发的编程语言。

  • 罗伯特·格里斯莫:曾参与开发Java HotSpot虚拟机和V8 JavaScript引擎。
  • 罗布·派克:以参与开发Unix和Plan 9操作系统闻名,并在图形用户界面的开发上贡献颇多。
  • 肯·汤普逊:Unix操作系统的共同创始人,同时也是C语言的共同发明人之一。

大事件

  • 2007 年 :雏形设计
  • 2009 年 :首次公开发布
  • 2010 年 :当选 2009 年年度语言,谷歌投入使用
  • 2011 年 :Google App Engine 支持 Go 语言

为什么需要Go语言

在Go语言诞生之前,谷歌主要使用C++和Java进行系统编程和后端服务开发。这些语言虽然功能强大,但也有显著的缺陷:

  1. 编译速度慢:C++的大型代码库需要很长的编译时间,这在快速开发和迭代中是一个严重的瓶颈。
  2. 复杂的依赖管理:大型项目中,C++和Java的依赖管理和编译链接过程非常复杂,导致开发和维护困难。
  3. 并发处理的复杂性:随着互联网服务的规模增长,并发处理成为关键问题。然而,C++和Java在处理并发时需要大量复杂的代码,容易出现错误。

这些问题激发了Go语言的设计,目标是创建一个:

  • 编译速度快
  • 语法简洁
  • 并发处理简单高效
  • 能有效处理现代计算环境的编程语言

大厂青睐🥰

谷歌(Google):

谷歌是Go语言的诞生地,Go语言由谷歌的工程师发起,并得到了谷歌公司的全力支持。

谷歌广泛使用Go语言来构建其后端服务和基础设施,包括著名的分布式存储系统如Google File System(GFS)和谷歌地图服务。

脸书(Facebook):

脸书在其后端服务和工具链中也大量使用Go语言。这种选择是出于Go语言对并发的强大支持,使得脸书能够构建出更高效、响应更迅速的系统。

亚马逊(Amazon):

作为全球最大的电商和云计算公司之一,亚马逊也在其云服务AWS(Amazon Web Services)中广泛采用Go语言。Go语言的高性能和内置的并发机制使得亚马逊能够构建出高度可伸缩的云服务。

微软(Microsoft):

微软对Go语言的运用主要集中在Azure云服务和一些后端服务上。Go语言的轻量级和高并发特性使得微软能够更高效地管理大规模的云基础设施。

苹果(Apple):

苹果公司也在其部分服务中采用了Go语言。Go语言的可读性和简洁性使得开发人员能够更容易地理解和维护代码,这对于苹果这样注重产品质量和用户体验的公司至关重要。

百度

百度在其各类服务中广泛应用了Go语言开发。

在2019年的第五届Gopher China大会上,百度的资深研发工程师陈肖楠进行了主题为《百度APP Go语言实践》的演讲,详细介绍了Go语言在百度APP中的应用。

此外,Go语言以其高效的并发模型和出色的网络编程能力,特别适合开发网络服务和分布式系统,这也正是百度智能云等业务所倾向采用的技术方向。

腾讯

腾讯在一些后端服务和分布式系统中使用Go语言,这主要得益于Go语言在并发处理、性能优化和构建高效服务方面的优势。

Go语言的轻量级设计、垃圾回收机制以及天然支持的并发模型,使得它成为处理腾讯规模的业务和服务的良好选择。

具体而言,腾讯在一些云服务、即时通讯、游戏后端等领域使用了Go语言。

字节跳动

字节跳动作为一家技术驱动型公司,广泛使用go语言来开发高性能、高可用性和易于扩展的系统。go语言的并发模型、网络编程能力和简洁易学的语法,使得它成为字节跳动实现创新和提供优质内容的理想编程语言。在未来,字节跳动将继续加强对go语言的使用和贡献,为用户提供更好的产品和体验。

小米

小米科技在多个领域都广泛应用了Go语言开发。在2019年的第五届Gopher China大会上,小米的高级研发工程师徐成详细介绍了他们开源的数据库中间件Gaea,这一组件的整体架构、内部模块以及具体的实践应用。

进一步地,到了2021年,小米中国区的电商和服务体系在Go语言构建的微服务体系之上进行了大规模的调整。这套体系由小米内部自研的Go语言微服务框架koala支撑,服务于数以千计的微服务应用。

京东

京东云消息推送系统、云存储,以及京东商城的列表页等都是使用Go语言开发的。

与Java的爱恨情仇🔁

Go语言和Java各有优势,选择哪种编程语言取决于具体应用场景和需求。Go语言在高性能、并发编程和云计算领域具有优势,而Java在生态、稳定性和企业应用中占主导地位。未来技术发展中,各种编程语言都有重要作用。

性能与效率

Go语言以其轻量级和高性能而著称。其设计初衷就是为了解决大规模并发和网络通信问题,因此在处理高并发场景时,Go语言的表现通常优于Java。Go的协程(goroutine)和通道(channel)机制使得并发编程变得简单而高效,这在处理大数据、云计算和微服务等领域具有明显优势。

而Java,虽然也支持并发编程,但其线程管理和内存模型相对复杂,需要更多的资源开销。不过,Java的JVM(Java虚拟机)优化和垃圾回收机制使得它在某些场景下也能实现高效的性能。

生态与社区

Java作为成熟、稳定的语言,已经建立了庞大的生态系统和社区。Java拥有庞大的库和框架,如Spring、Hibernate等,为开发者提供了丰富的工具和资源。此外,Java作为一种成熟、稳定的语言,已经在企业级应用中占据了重要地位,有着广泛的用户基础。

Go语言虽然相对较新,但其社区也在迅速发展壮大。Go语言的标准库非常完善,涵盖了网络编程、并发编程、文件处理等多个方面。此外,Go语言也拥有一些优秀的第三方库和框架,如Gin、Echo等,为开发者提供了丰富的选择。

学习曲线与创新能力

Java作为一种成熟、稳定的语言,其语法和特性已经被广大开发者所熟悉。对于初学者来说,学习Java可能会更容易上手。但是,Java的语法和特性也相对固定,创新空间有限。

而Go语言则更加简洁、直观,易于学习和掌握。Go语言鼓励简洁、直接的编程风格,注重代码的可读性和可维护性。此外,Go语言也在不断创新,引入新的语法和特性,以满足不断变化的应用需求。

应用领域的扩展性

Java作为一种成熟、稳定的语言,已经在企业级应用中占据了重要地位。无论是Web开发、移动开发还是大数据分析等领域,Java都有着广泛的应用。此外,Java还广泛应用于金融、电信、医疗等关键领域,具有高度的可靠性和稳定性。

Go语言虽然在某些领域的应用还不及Java广泛,但也在不断拓展其应用领域。Go语言在云计算、微服务、物联网等领域具有明显优势,这些领域正逐渐成为技术发展的热点。此外,随着Go语言生态的不断发展壮大,其应用领域也将进一步扩大。

安装Go⬇️

第一步:下载安装包

官网地址:https://golang.google.cn/dl/

在这里插入图片描述

现如今Go的版本已经更新到了1.22.5,根据自己的电脑系统选择对应的版本下载即可~

接下来以Windows11 操作系统为例:

选中go1.22.5.windows-amd64.msi,点击即可下载。

第二步:从文件夹中安装

在这里插入图片描述

下载完成后,双击上图中的msi文件即可开始安装,没有基础的小白一路默认即可,觉得不想占用默认的C盘空间,也可在如下界面进行安装路径的选择,选择自己想要的路径。

选择路径

安装好之后按住win+R键,在弹出的窗口中即可打开CMD命令行窗口

在这里插入图片描述

在 cmd 命令窗口输入go version 查看安装的版本,成功运行并如下图输出即安装成功。

在这里插入图片描述

现在安装就已经大功告成啦!这是从零基础学Go系列的第一篇文章,接下来将和同学们一道开始深入Go的代码,领略Go的风采

欢迎关注公众号:“全栈开发指南针”
这里是技术潮流的风向标,也是你代码旅程的导航仪!🚀
Let’s code and have fun! 🎉

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值