Go编程语言(介绍)
简介
Go 是一种程序性编程语言。它是由Robert Griesemer、Rob Pike和Ken Thompson于 2007年在Google开发的,但在 2009年 作为一种开源的编程语言推出。程序是通过使用包来组装的,以实现对依赖关系的有效管理。这种语言也支持与动态语言类似的环境采用模式。例如,类型推理(y := 0是一个有效的浮动类型的变量y的声明)。
开始学习 Go编程
有各种在线IDE,如The Go Playground, repl.it等,可用于运行Go程序而无需安装。
要在自己的个人电脑或笔记本上安装Go,我们需要以下两个软件。文本编辑器和编译器
文本编辑器: 文本编辑器为你提供了一个编写源代码的平台。以下是文本编辑器的列表。
- Windows记事本
- 操作系统编辑命令
- 简介
- Epsilon
- vm或vi
- Emacs
- VS代码
寻找Go编译器: Go发行版以二进制文件的形式安装在FreeBSD(第8版及以上)、 Linux、Mac OS X(Snow Leopard及以上) ,以及采用32位(386)和64位(amd64)x86处理器架构的Windows操作系统上。
有关安装的更多说明。请访问 对于安装GO发行版
Note: Extension of source code file of go language must be **.go**
用Go编写第一个程序 。
package main
import "fmt"
func main() {
// prints geeksforgeeks
fmt.Println("Hello, geeksforgeeks")
}
输出
Hello, geeksforgeeks
围棋程序的语法解释 。
- 第1行: 它包含了程序的包main ,其中有程序的总体内容。它是运行程序的初始点,所以必须写。
- 第 2行: 包含import “fmt”,它是一个预处理命令,告诉编译器要包含包中的文件。
- 第3行 : main函数 ,它是程序执行的开始。
- 第4行: 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结构进行简单的类型推导,减少了结巴现象。
- 没有类型层次:类型就是,它们不需要宣布它们的关系。
硬件限制
我们观察到,在十年中,硬件和处理配置的变化速度非常缓慢。在2004年,P4的时钟速度是3.0GHz,而现在在2018年,Macbook pro的时钟速度是约(2.3Ghz v 2.66Ghz)。为了加快功能,我们使用更多的处理器,但使用更多的处理器,成本也会增加。因此,我们使用有限的处理器,使用有限的处理器,我们有一个沉重的编程语言,它的线程需要更多的内存,降低了我们系统的性能。因此,为了克服这样的问题,Golang的设计方式是使用Goroutine来代替线程,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语言一样,支持平台独立。由于它的模块化设计和模块化,也就是说,代码被编译并转换成尽可能小的二进制形式,因此,它不需要依赖性。它的代码可以在任何平台或任何服务器和你工作的应用程序中进行编译。
极客教程