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

[golang] 介绍 | 特点 | 应用场景

编程不仅仅是写代码,更是一种思考方式。”

参考资料
  1. 《Unix编程环境》- Brian W. Kernighan, Rob Pike
  2. 《程序设计实践》- Brian W. Kernighan, Rob Pike
  3. Go语言官方网站:https://golang.org
  4. Rob Pike的个人博客:http://herpolhode.com/rob/

golang最适合(擅长)做什么

Go语言,主要用作 服务器端开发,其定位是用来开发“大型软件”的,适合于需要很多程序员一起开发,并且开发周期较长的大型软件和支持云计算的网络服务。 (推荐学习:go)

Go语言融合了传统编译型语言的高效性和脚本语言的易用性和富于表达性,不仅提高了项目的开发速度,而且后期维护起来也非常轻松。

鉴于Go语言的特点和设计的初衷,从以下几个方面来分析Go语言擅长的领域:

  • 在服务器编程方面,Go语言适合 处理日志、数据打包、虚拟机处理、文件系统、分布式系统、数据库代理等;
  • 网络编程方面,Go语言广泛应用于 Web 应用、API 应用、下载应用等;
  • Go语言还可用于 内存数据库和云平台领域,目前国外很多云平台都是采用 Go 开发。

除了上面介绍到的,Go语言还可以用来 开发底层,例如,以太坊、超级账本等都是基于Go语言开发的。

现在比较流行的区块链技术方面,Go语言也是非常受欢迎的,很多基于区块链的 DApps(去中心化应用)和工具都是用的Go语言来实现的。

下面列举了一些基于Go语言开发的优秀开源项目:

  • 云计算基础设施领域,代表项目:docker、kubernetes、etcd、consul、cloudflare CDN、七牛云存储等。
  • 基础软件,代表项目:tidb、influxdb、cockroachdb 等。
  • 微服务,代表项目:go-kit、micro、monzo bank 的 typhon、bilibili 等。
  • 互联网基础设施,代表项目:以太坊、hyperledger 等。

Go语言的优势还是比较多的,比如,Go语言的性能非常出色,最关键的是在性能强劲的同时还能像解释型语言一样高效地进行开发。


1.Go语言的诞生与发展

1. Go语言的创作背景

2007年9月20日的下午,在谷歌山景城总部的一间办公室里,一个看似普通的场景却成为了计算机编程语言领域的重要历史时刻。Rob Pike启动了一个C++工程的编译构建,按照以往经验,这需要等待近一个小时。

在这段等待时间里,Rob Pike与Robert Griesemer和Ken Thompson坐在一起,讨论设计一门新编程语言的想法。Rob希望创造一种简洁、小巧、编译快速,同时拥有不俗性能的编程语言,这样他们就不再需要每次编译时都面临漫长的等待。经过一番头脑风暴,Go语言的概念就此诞生。

图片:Go语言Logo

创建Go语言的核心团队成员包括:

  • Rob Pike:Plan 9操作系统的作者之一,UTF-8的设计者,Go语言设计的领头人
  • Ken Thompson:图灵奖获得者,Unix系统创始人,B语言和C语言创始人
  • Robert Griesemer:曾协助制作Java的HotSpot编译器和Chrome浏览器的JavaScript引擎V8

Go语言创建的初衷主要是为了解决两个问题:

  1. 计算机硬件技术更新频繁,性能提高很快,但主流编程语言发展明显落后于硬件,不能合理利用多核多CPU的优势提升软件系统性能
  2. 软件系统复杂度越来越高,维护成本越来越高,当时缺乏一个足够简洁高效的编程语言。尤其是在Google这样的大型公司,代码库庞大,构建时间长,开发效率低下
2. Go语言的演进历程

Go语言的发展经历了以下几个重要阶段:

  • 2007年9月:Go语言概念初步形成
  • 2008年初:Ken Thompson实现了第一版Go编译器,用于验证之前的设计
  • 2009年11月10日:Google正式将Go语言以开源方式向全球发布
  • 2012年:发布Go 1稳定版本
  • 2015年8月:Go 1.5发布,移除了"最后残余的C代码"

3. Go语言的设计理念

Rob Pike在设计Go语言时融入了自己独特的编程哲学。他认为一门优秀的编程语言应该:

  • 简洁:语法简单明了,减少学习和使用的复杂度
  • 高效:快速编译,高性能运行
  • 实用:解决实际工程问题,而非学术上的完美

有趣的是,虽然Go语言最初是以C为原型,以C++为目标设计,但最终的结果却大相径庭。几个礼拜之前我被问到:“对于Go语言,最令你惊讶的是什么?

当时我就明确地给出了答案:“虽然我希望C++程序员能够使用Go作为替代品,但实际上大部分Go程序员都是从Python和Ruby转过来的,其中却少有C++程序员。”

2、Go语言的技术特色

1. 并发编程模型

Go语言最突出的特点之一是其独特的并发模型,这也体现了Rob Pike的编程哲学

其核心是"Don’t communicate by sharing memory, share memory by communicating."(不要通过共享内存来通信,而是通过通信来共享内存这句被称为Go谚语的名言。

Go语言的并发特性主要体现在两个核心概念上:

  • Goroutine:轻量级线程,由Go运行时管理
  • Channel:goroutine之间的通信机制

  • Goroutine比传统线程更轻量,可以创建成千上万个而不会耗尽系统资源。它们由Go运行时智能调度,能够充分利用多核处理器。
  • Channel则是goroutine之间传递数据和同步的管道

Rob Pike曾解释道:“一旦有两个独立执行的函数,如果Goroutines需要协作,它们就需要相互通信。因此,就产生了通道的概念,它本质上是一个类型化的消息队列。”

2. 简洁的语法设计

Go语言的语法极其简洁,这与Rob Pike追求简单明了的设计理念一致。Go消除了许多其他语言中的冗余和复杂性:

  • 没有类和继承,而是使用结构体(struct)和接口(interface)
  • 不需要分号结束语句
  • 简化的错误处理机制
  • 内置垃圾回收
  • 强类型但有类型推导

这种设计使得Go代码往往比其他语言更加清晰易读,也更容易维护。

// Go语言"Hello, World"示例
package mainimport "fmt"func main() {fmt.Println("Hello, World!")
}
3. 标准库与工具链

Go语言拥有强大而完整的标准库,涵盖了网络、加密、压缩、测试等各种常用功能。同时,Go还提供了完整的工具链,包括:

  • go build:编译程序
  • go test:运行测试
  • go fmt:代码格式化
  • go get:包管理
  • go doc:查看文档

这些工具使得Go语言开发体验非常流畅,也体现了Rob Pike对开发效率的重视。


3、从Go语言看Rob Pike的技术思想

1. 简单胜于复杂

Rob Pike一直坚持"简单胜于复杂"的设计理念。在他看来,简单的设计更容易理解、维护和扩展,而复杂的设计则容易引入问题。

Rob Pike提出的Go谚语中,多次强调了简单性的重要性。例如,Clear is better than clever”(清晰胜过聪明)、“A little copying is better than a little dependency”(少量复制好过少量依赖)等。

这种追求简单的哲学不仅体现在Go语言的设计中,也体现在Rob Pike的整个编程生涯中。

2. 务实的工程态度

Rob Pike始终保持着务实的工程态度。他关注的不是学术上的完美,而是如何解决实际问题。Go语言的许多设计决策都体现了这一点。

例如,Go语言的接口实现是隐式的,不需要显式声明。这种设计使得代码更加灵活,能够更好地适应变化。

// 在Go中定义和实现接口的示例
type Writer interface {Write([]byte) (int, error)
}// File类型隐式实现了Writer接口
type File struct {// ...
}func (f *File) Write(data []byte) (int, error) {// 实现Write方法return len(data), nil
}
3. 对未来技术的前瞻性

Rob Pike对技术发展有着敏锐的洞察力。早在多核处理器还不普及的时候,他就意识到并发编程将成为未来的趋势,并将这一理念融入Go语言的设计中。

在一次采访中,Rob Pike谈到:"需要说明的是,我是一个联合作者。Ken Thompson和Robert Griesemer和我一起启动了这个项目,还有其他很多人也为项目做了巨大贡献,所以请不要把我当成’作者’。"这体现了他谦逊的品格和对团队合作的重视。


4、Rob Pike的人格魅力与影响力

1. 不断挑战与创新的精神

除了编程,Rob Pike还热爱冒险。曾有报道称他在2003年和朋友一起骑自行车时不慎摔断了三根肋骨,锁骨碎裂,肩胛骨纵向分裂。但有趣的是,事后Rob竟然还饶有兴趣地将自己骨头的X射线底片放到了个人博客上和粉丝们一起研究观赏。

这种不畏挑战、乐于尝试的精神也体现在他的编程生涯中。从操作系统到编程语言,从文本编辑器到UI界面,Rob Pike总是勇于探索新的领域。

2. 影响力与荣誉

Rob Pike的工作对计算机科学产生了深远影响:

- UTF-8编码已成为互联网文本的主要编码方式
- Go语言已成为云计算和微服务领域的主流语言之一
- 他的著作影响了几代程序员
3. 技术传承与社区建设

Rob Pike不仅创造了技术,还致力于知识的传播和社区的建设。他通过演讲、文章和书籍分享自己的见解,帮助更多人理解和应用先进的编程理念。

当被问及如何处理批评时,Rob Pike回答道:“很简单,忽略那些讨厌你的人。只需要倾听那些理解你的目标的声音,他们才是你需要关心的人。不是每个人都认同你所做的,不过这没关系,那些参与推进你正在尝试做的事情的人是一个极好的想法、能量和灵感的来源。”

5、结语:编程哲学的传承者

Rob Pike的极客人生展现了一位真正的计算机科学家应有的品质:技术精湛、勇于创新、乐于分享。从贝尔实验室到Google,从Unix到Go,他不断突破自我,创造出影响世界的技术。

Go语言作为他职业生涯的重要成果之一,已经成为现代软件开发的重要工具,特别是在云计算、微服务和DevOps领域。它简洁而强大的设计理念,体现了Rob Pike对编程的深刻理解。

对于今天的程序员来说,学习Rob Pike的技术思想和编程哲学,不仅能够提高编程技能,更能够培养正确的工程态度和创新精神。正如Rob Pike所言:“编程不仅仅是写代码,更是一种思考方式。”


What is Golang and How to Install it?
什么是 Golang 以及如何安装它?

Golang or Go is an open source programming language which was developed by a team of open source programmers in Google. The lead developers of this language, Robert Griesemer, Rob Pike, and Ken Thompson developed Golang technology, as an alternative against the complex language of C++. Since, its development, Golang has been breaking all the trends and surpassing major programming languages such as Python. The popularity of Golang has been increasing as new updates keep coming in, with improved features and resolved bugs making it very efficient as well as easier to learn. Programming languages can be difficult to understand, thus in this article we have elaborately explained the concept of Golang along with answering the question of how to install it in a stepwise manner.
Golang 或 Go 是一种开源编程语言,由 Google 的开源程序员团队开发。这种语言的首席开发人员 Robert Griesemer、Rob Pike 和 Ken Thompson 开发了 Golang 技术,作为 C++ 复杂语言的替代方案。自开发以来,Golang 一直在打破所有趋势并超越 Python 等主要编程语言。随着新更新的不断涌入,Golang 的受欢迎程度一直在增加,改进的功能和解决的错误使其非常高效且更易于学习。编程语言可能难以理解,因此在本文中,我们详细解释了 Golang 的概念,并回答了如何逐步安装它的问题。

  • WHAT IS GOLANG? 什么是 GOLANG?

Golang technology, as its official website says is
Golang 技术,正如其官方网站所说

“Go is an open source programming language that makes it easy to build simple, reliable, and efficient software.”
“Go 是一种开源编程语言,可以轻松构建简单、可靠和高效的软件。”

Golang or Go is a programming language that combines the elements of all the major languages and minuses all the cons. The main feature of Go is that it reduces the complexity that is faced by programmers while learning the C++. The language as the website defines it, is very reliable as it is developed by Google itself. The efficiency of the programming language is due to the language which is easy to read and the program is easy to maintain. Not only this, but Go has a garbage collection of its own along with it being faster than Python. There are already many big firms that have started using Go in their applications and softwares. Golang technology creates various new aspects and job opportunities.
Golang 或 Go 是一种编程语言,它结合了所有主要语言的元素并减去了所有缺点。Go 的主要特点是它降低了程序员在学习 C++ 时面临的复杂性。网站定义的语言非常可靠,因为它是由谷歌自己开发的。编程语言的效率是由于语言易于阅读且程序易于维护。不仅如此,Go 还有自己的垃圾回收,而且它比 Python 更快。已经有许多大公司已经开始在他们的应用程序和软件中使用 Go。Golang 技术创造了各种新的方面和就业机会。

The programming language was created mainly to be efficient as well as easier to operate and learn; and Go has exceeded all the expectations granting users more and more features. Go has not only improved itself since it was created in 2007, but has bested all the major programs, becoming the most renowned programming language as of now.
创建编程语言主要是为了高效以及更易于作和学习;Go 已经超出了所有期望,赋予了用户越来越多的功能。Go 自 2007 年创建以来不仅自我改进,而且击败了所有主要程序,成为迄今为止最著名的编程语言。

  • HOW TO INSTALL GOLANG?
    如何安装 GOLANG?

Installation of programming languages can be a tedious job due to its complex nature. However, in this article we will tell you how to install Golang technology in a stepwise manner to make it easier.
由于其复杂性,安装编程语言可能是一项乏味的工作。但是,在本文中,我们将告诉您如何逐步安装 Golang 技术以使其更容易。

  1. The first step is to go on https://golang.org/ and download the Golang programming language. There are 3 types of versions available on the website; stable, unstable and archive. Out of the three, the stable one is recommended as it is the latest version of the software which means improved language. There are 2 types of files to be downloaded, the zip file and the MSI Installer. The zip file needs to be unzipped before following the remaining steps of the installation process. Whereas the MSI Installer directly installs the program in the hardware.
    第一步是继续 https://golang.org/ 并下载 Golang 编程语言。网站上有 3 种类型的版本可用;稳定、不稳定和存档。在这三者中,建议使用稳定的,因为它是软件的最新版本,这意味着改进的语言。有 2 种类型的文件需要下载,zip 文件和 MSI 安装程序。在执行安装过程的其余步骤之前,需要解压缩 zip 文件。而 MSI 安装程序直接将程序安装在硬件中。
  2. After the file has been downloaded the file is made to run by clicking twice on the download and giving the permission for the program to be run in the system.
    下载文件后,通过双击下载并授予在系统中运行程序的权限,使文件运行。
  3. After the system is allowed to run, a dialog box appears on the screen. Click next, after which the license agreement is written, read it carefully and then click next again. After which the box asks you for the path in which to save the language, for which the C:\Go\ path is recommended, click next once finished and after this click on the install option.
    允许系统运行后,屏幕上会出现一个对话框。单击下一步,然后编写许可协议,仔细阅读,然后再次单击下一步。之后,该框会询问您保存语言的路径,建议使用 C:\Go\ 路径,完成后单击下一步,然后单击安装选项。
  4. To make sure that the Go binaries have been successfully added in the environment variables, go to the environment variables. For this, click on the start option, then type environment variables in the search box. Select the first option that appears. In the environment variables box, go to the option of path appearing under the User Variables. In this, you would find a path specified as %USERPROFILE%\go\bin. To ensure that the installation is completed correctly, open the Command prompt window as an Administrator and try the go command. If all the commands appear correctly, congratulations, you’ve installed the efficient language of Golang successfully!!
    要确保 Go 二进制文件已成功添加到环境变量中,请转到环境变量。为此,请单击开始选项,然后在搜索框中键入环境变量。选择出现的第一个选项。在环境变量框中,转到出现在用户变量下的路径选项。在此,您会发现一个指定为 %USERPROFILE%\go\bin 的路径。为确保正确完成安装,请以管理员身份打开命令提示符窗口并尝试 go 命令。如果所有命令都正确显示,恭喜,您已成功安装 Golang 的高效语言!!

Once completing the entire installation process, you are ready to rock and make use of the most efficient and comparatively simpler programming language, namely Golang or Go.
完成整个安装过程后,您就可以开始使用最有效且相对简单的编程语言,即 Golang 或 Go。

相关文章:

  • elasticsearch查询中的特殊字符影响分析
  • 【Hive入门】Hive分区与分桶深度解析:优化查询性能的关键技术
  • 【前端】【业务场景】【面试】在前端开发中,如何实现一个可拖动和可缩放的元素,并且处理好边界限制和性能优化?
  • 【FAQ】针对于消费级NVIDIA GPU的说明
  • 极狐GitLab 合并请求依赖如何解决?
  • Python字符串三剑客:len()、split()、join()深度解析
  • RK3588芯片NPU的使用:官方rknn_yolov5_android_apk_demo运行与解读
  • 【深度学习核心技术解析】从理论到实践的全链路指南
  • x-cmd install | brows - 终端里的 GitHub Releases 浏览器,告别繁琐下载!
  • Stack和Queue和deque的讲解(底层实现 手撕版)
  • ospf综合作业
  • 企业办公即时通讯软件BeeWorks,私有化安全防泄密
  • Java Agent 注入 WebSocket 篇
  • 移动通信行业术语
  • 去掉从网页粘贴到Word的“↓“(向下的箭头)符号的方法
  • SAIL-RK3588协作机器人运动控制器技术方案
  • java—13 RocketMQ
  • 理解欧拉公式
  • VBA技术资料MF300:利用Mid进行文本查找
  • linux 中断子系统 层级中断编程
  • 李公明︱一周书记:大学的价值、韧性以及……不相称的对抗
  • 梁启超“失肾记”的余波:中西医论战与最后的真相
  • 蔚来李斌:当下国际贸易环境有不确定性,但坚信中国汽车产业最终将占全球四成份额
  • 神二十瞄准明日17时17分发射
  • 牛市早报|外汇局:4月以来外汇市场交易保持平稳,跨境资金延续净流入
  • 41岁知名学者陈昊因病骤然离世,北大再发讣告缅怀