当前位置:网站首页>Go 编程语言(简介)
Go 编程语言(简介)
2022-08-04 22:43:00 【51CTO】
介绍
Go是一种过程式编程语言。它由 Google 的 Robert Griesemer、Rob Pike 和 Ken Thompson 于2007年开发,但于2009 年作为开源编程语言推出。程序通过使用包进行组装,以有效管理依赖关系。该语言还支持采用类似于动态语言的模式的环境。例如,类型推断(y := 0 是浮点类型变量 y 的有效声明)。
从Go 编程开始
有各种在线 IDE,例如 The Go Playground、repl.it 等,无需安装即可运行 Go 程序。
为了在自己的 PC 或笔记本电脑上安装 Go,我们需要以下两个软件:文本编辑器和编译器
文本编辑器: 文本编辑器为您提供了一个编写源代码的平台。 以下是文本编辑器列表:
- Windows 记事本
- 操作系统编辑命令
- Brief
- Epsilon
- vm 或 vi
- Emacs
- VS 代码
寻找 Go 编译器: Go 发行版以二进制形式提供,可用于FreeBSD(版本 8 及更高版本)、Linux、Mac OS X(Snow Leopard 及更高版本)以及具有32 位 (386) 和64 位 (amd64 ) 的Windows 操作系统 ) x86处理器架构。
用 Go 编写第一个程序:
输出:
Go程序的语法解释:
- 第1行:包含程序的main包,包含程序的整体内容,是程序运行的起点,必须写。
- 第 2 行:它包含import “fmt”,它是一个预处理器命令,告诉编译器包含位于包中的文件。
- 第 3 行:main 函数,是程序执行的开始。
- 第 4 行:fmt.Println()是一个标准库函数,用于在屏幕上打印一些内容作为输出。在此,fmt包传递了用于显示输出的 Println 方法。
- 注释:注释用于解释代码,其使用方式与 Java、C 或 C++ 中的类似。编译器忽略注释条目并且不执行它们。注释可以是单行或多行。
单行注释:
语法:
多行注释:
语法:
下面是另一个例子:
输出:
上述程序说明:
在上述程序中,相同的包行、相同的导入行、相同的函数声明和使用与我们在第一个 GO 程序中使用的相同的 Println 函数。这次不是打印字符串 “Hello, go”, 而是打印字符串 1 + 1 = 后跟表达式 1 + 1 的结果。这个表达式由三部分组成:数字文字 1(它的类型为 int )、+ 运算符(表示加法)和另一个数字文字 1。
为什么“Go语言”是这样的?
因为 Go 语言致力于将解释型动态类型语言的编程易用性与静态类型编译语言的效率和安全性相结合。它还旨在实现现代化,支持网络和多核计算。
Go 中排除了哪些其他语言中存在的内容?
- Go 试图减少单词的两种含义的输入量。在整个设计过程中,开发人员试图减少混乱和复杂性。
- 没有前向声明,也没有头文件;一切都只声明一次。
- 使用:=declare-and-initialize 构造的简单类型派生可以减少口吃。
- 没有类型层次结构:类型只是,它们不必宣布它们的关系。
硬件限制
我们观察到,十年来,硬件和处理配置的变化速度非常缓慢。2004 年,P4 的时钟速度为 3.0 GHz,而现在在 2018 年,Macbook pro 的时钟速度为 Approx (2.3Ghz v 2.66Ghz)。为了加快速度,我们使用更多处理器的功能,但使用更多处理器成本也会增加。由于这个原因,我们使用有限的处理器,并且使用有限的处理器,我们有一种繁重的编程语言,其线程占用更多的内存并降低了我们系统的性能。因此,为了解决这个问题,Golang 的设计方式是使用 Goroutine 代替线程,它类似于线程,但消耗的内存非常少。
就像线程消耗 1MB 而 Goroutine 消耗 2KB 内存一样,因此我们可以同时触发数百万个 goroutine。所以上面讨论的一点使 golang 成为像 C++ 和 Java 一样处理并发的强大语言。
Go语言的优缺点
优点:
- 灵活——简洁、简单且易于阅读。
- 并发性-它允许多个进程同时有效地运行。
- 快速结果 - 它的编译时间非常快。
- 库 - 它提供了丰富的标准库。
- 垃圾收集 - 这是 Go 的一个关键特性。Go 擅长对内存分配进行大量控制,并且在最新版本的垃圾收集器中显着减少了延迟。
- 它验证接口和类型嵌入。
缺点:
- 它不支持泛型,即使有很多关于它的讨论。
- 使用这种编程语言分发的包非常有用,但 Go 在传统意义上并不是那么面向对象。
- 缺少一些库,尤其是 UI 工具包。
用 Go 语言开发的一些流行的应用程序
- Docker:一套部署linux容器的工具
- Openshift:红帽的云计算平台即服务。
- Kubernetes:无缝自动化部署流程的未来
- Dropbox:将他们的一些关键组件从 Python 迁移到 Go。
- Netflix:他们的服务器架构的两个部分。
- InfluxDB:是由 InfluxData 开发的开源时间序列数据库。
- Golang:语言本身是用 Go 编写的。
Go语言的特点
- 语言设计:语言的设计者有意识地保持语言简单易懂。整个细节都在几页之内,一些有趣的设计决策是通过语言中的面向对象支持做出的。为此,该语言是固执己见的,并推荐了一种惯用的实现方式。它更喜欢组合而不是继承。在 Go 语言中,“事半功倍”是口号。
- 包管理:Go 融合了现代开发人员处理开源项目的工作流程,并将其包含在管理外部包的方式中。直接在工具中提供支持以获取外部包并通过一组简单的命令发布您自己的包。
- 强大的标准库:Go 有强大的标准库,它以包的形式分发。
- 静态类型:Go 是静态类型语言。因此,在这个编译器中,不仅可以成功编译代码,还可以确保类型转换和兼容性。由于这个特性,Go 避免了我们在动态类型语言中面临的所有问题。
- 测试支持:Go 本身为我们提供了单元测试功能,即一种简单的机制来编写与您的代码并行的单元测试,因此您可以通过自己的测试了解代码覆盖率。作为示例,这可以很容易地用于生成代码文档。
- 平台无关:Go 语言就像 Java 语言一样,支持平台无关。由于其模块化设计和模块化,即代码被编译并转换为尽可能小的二进制形式,因此不需要依赖。它的代码可以在任何平台或您工作的任何服务器和应用程序中编译。
边栏推荐
猜你喜欢
Latex快速插入作者ORCID
三个多月、40余场面试浓缩为6000字
移动web开发03
Charles & TCPDump & Fiddler 抓包三兄弟七夕联手,还抓不到你的心?
【3D建模制作技巧分享】ZBrush如何重新拓扑
Leaflets of three bouquet of roses
【游戏建模模型制作全流程】在ZBrush中雕刻恶魔城男性角色模型
ffplay视频播放原理分析
Deep Learning RNN Architecture Analysis
【Social Marketing】WhatsApp Business API: Everything You Need to Know
随机推荐
力扣24-两两交换链表中的节点——链表
synchronized和ReentrantLock都很丝滑,因为他们都是可重入锁,一个线程多次拿锁也不会死锁,我们需要可重入
如何在项目中正确使用WebSocket
go语言的日志实现(打印日志、日志写入文件、日志切割)
一招包治pycharm DEBUG报错 UnicodeDecodeError: ‘utf-8‘ codec can‘t decode
软件测试外包公司怎么样?有什么好处和坏处?为什么没人去?
期货开户哪个平台好,要正规安全的
SSM整合完整流程讲解
【3D建模制作技巧分享】ZBrush如何设置笔刷快捷键
【2020】【Paper Notes】Metasurfaces: Multifunctional and Programmable——
Based on the results of the facts
Hardware factors such as CPU, memory, and graphics card also affect the performance of your deep learning model
Reconfigure the ffmpeg plugin in chrome
How to right use of WebSocket in project
【论文笔记KDD2021】MixGCF: An Improved Training Method for Graph Neural Network-based Recommender Systems
LocalDateTime的详细使用方法
生成回文数
测试薪资这么高?刚毕业20K,仅需3.5个月
【3D建模制作技巧分享】如何使用ZBrush导出效果图
【组成原理 六 存储器类型】