介绍
Go是一种过程式编程语言。它由 Google 的 Robert Griesemer、Rob Pike 和 Ken Thompson 于2007年开发,但于2009 年作为开源编程语言推出。通过使用包来组装程序,以有效管理依赖关系。该语言还支持采用类似于动态语言的模式的环境。例如,类型推断(y := 0 是 float 类型变量 y 的有效声明)。
从Go 编程开始
有各种在线 IDE,例如 The Go Playground、repl.it 等,无需安装即可运行 Go 程序。
要在自己的 PC 或笔记本电脑上安装 Go,我们需要以下两个软件:文本编辑器和编译器
文本编辑器:文本编辑器为您提供了一个编写源代码的平台。以下是文本编辑器列表:
- 视窗记事本
- 操作系统编辑命令
- 简短的
- 厄普西隆
- 虚拟机或 vi
- Emacs
- VS代码
寻找 Go 编译器: Go 发行版以二进制安装形式提供,可用于FreeBSD (版本 8 及更高版本)、 Linux、Mac OS X(Snow Leopard 及更高版本)以及具有32 位(386)和64 位(amd64 )的Windows 操作系统) x86处理器架构。
有关安装的更多说明。请访问安装 GO 发行版
Note: Extension of source code file of go language must be .go
用 Go 编写第一个程序:
Go
package main
import "fmt"
func main() {
// prints geeksforgeeks
fmt.Println("Hello, geeksforgeeks")
}
Go
package main
import "fmt"
func main() {
fmt.Println("1 + 1 =", 1 + 1)
}
输出:
Hello, geeksforgeeks
Go程序语法说明:
- 第1行:包含程序的main包,包含程序的整体内容,是程序运行的起点,所以必须写。
- 第 2 行:它包含import “fmt” ,这是一个预处理器命令,它告诉编译器包含位于包中的文件。
- 第 3 行: main函数,它是程序执行的开始。
- 第 4 行: fmt.Println()是一个标准库函数,用于在屏幕上打印一些东西作为输出。其中, fmt包传输了 Println 方法,用于显示输出。
- 注释:注释用于解释代码,其使用方式与Java或 C 或 C++ 中的使用方式类似。编译器忽略注释条目并且不执行它们。注释可以是单行或多行。
单行评论:
句法:
// single line comment
多行注释:
句法:
/* multiline comment */
下面是另一个例子:
去
package main
import "fmt"
func main() {
fmt.Println("1 + 1 =", 1 + 1)
}
输出:
1 + 1 = 2
上述程序的说明:
在上面的程序中,与我们在第一个 GO 程序中使用的相同的包行、相同的导入行、相同的函数声明和使用相同的 Println函数。这次不是打印字符串“Hello, geeksforgeeks”,而是打印字符串1 + 1 = 后跟表达式 1 + 1 的结果。该表达式由三部分组成:数字字面量1(类型为 int )、+运算符(表示加法)和另一个数字字面量1。
为什么是“Go 语言”?
因为 Go 语言努力将解释型、动态类型语言的编程简便性与静态类型、编译型语言的效率和安全性结合起来。它还旨在成为现代的,支持网络和多核计算。
在 Go 中排除了其他语言中的哪些内容?
- Go 试图减少在这个词的两种意义上的打字量。在整个设计过程中,开发人员试图减少混乱和复杂性。
- 没有前向声明和头文件;一切都只声明一次。
- 通过使用:= declare-and-initialize 构造的简单类型派生减少了口吃。
- 没有类型层次结构:类型只是are ,它们不必声明它们的关系。
硬件限制
我们观察到,十年来,硬件和处理配置的变化速度非常缓慢。 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 本身为我们提供了单元测试功能,即一种简单的机制来编写与代码并行的单元测试,因此您可以通过自己的测试了解代码覆盖率。这可以很容易地用于生成您的代码文档作为示例。
- 平台独立性: Go 语言就像Java语言一样,因为它支持平台独立性。由于其模块化设计和模块化,即代码被编译并转换为尽可能小的二进制形式,因此不需要依赖。它的代码可以在任何平台或您工作的任何服务器和应用程序中编译。