Go 编程语言简介

Go是一种过程式编程语言。它由 Google 的 Robert Griesemer、Rob Pike 和 Ken Thompson 于2007年开发,但于2009 年作为一种开源编程语言推出。程序通过使用包进行组装,以有效管理依赖关系。该语言还支持采用类似于动态语言的模式的环境。例如,类型推断(y := 0 是浮点类型变量 y 的有效声明)。

有各种在线 IDE,例如 The Go Playground、repl.it 等,无需安装即可运行 Go 程序。 

为了在自己的 PC 或笔记本电脑上安装 Go,我们需要以下两个软件:文本编辑器和编译器 
文本编辑器:文本编辑器为您提供了一个编写源代码的平台。以下是文本编辑器列表:

注意:go语言源代码文件扩展名必须为.go
package main
import "fmt"

func main() {

	// prints geeksforgeeks
	fmt.Println("Hello, geeksforgeeks")
}

输出:  

<meta charset="utf-8">Hello, geeksforgeeks

Go程序的语法解释:

  • 第1行:包含程序的main包,包含程序的整体内容,是程序运行的起点,必须写。
  • 第 2 行:它包含import “fmt”,这是一个预处理器命令,告诉编译器包含位于包中的文件。
  • 第 3 行:main 函数,是程序执行的开始。
  • 第 4 行:fmt.Println()是一个标准库函数,用于在屏幕上打印一些内容作为输出。在此,fmt包传递了用于显示输出的 Println 方法。

注释:注释用于解释代码,其使用方式与JavaCC++中的类似。编译器忽略注释条目并且不执行它们。注释可以是单行或多行。

单行注释

// 单行注释

多行注释

/*
多行注释
*/
package main
import "fmt"

func main() {
fmt.Println("1 + 1 =", 1 + 1)
}

输出

1 + 1 = 2

Go语言的优缺点

好处:  

  1. 灵活——简洁、简单且易于阅读。
  2. 并发性-它允许多个进程同时有效地运行。
  3. 快速结果 – 它的编译时间非常快。
  4. 库 – 它提供了丰富的标准库。
  5. 垃圾收集 – 这是 Go 的一个关键特性。Go 擅长对内存分配进行大量控制,并且在最新版本的垃圾收集器中显着减少了延迟。
  6. 它验证接口和类型嵌入。

缺点:  

  1. 它不支持泛型,即使有很多关于它的讨论。
  2. 使用这种编程语言分发的包非常有用,但 Go 在传统意义上并不是那么面向对象。
  3. 缺少一些库,尤其是 UI 工具包。

Google创造Go语言

计算机硬件技术更新频繁,性能提高很快。目前主流的编程语言发展明显落后于硬件,不能合理利用多核多CPU的优势提升软件系统性能。
软件系统复杂度越来越高,维护成本越来越高,目前缺乏一个足够简洁高效的编程语言。
【现有的编程语言:1.风格不统一 2.计算能力不够 3.处理大并发不够好】
企业运行维护很多c/c++的项目,c/c++程序运行速度虽然很快,但是编译速度确很慢,同时还存在内存泄漏的一些列的困扰需要解决。

Go语言特性

Go语言保证了既能达到静态编译语言的安全和性能,又达到了动态语言开发维护的高效率,使用一个表达式来形容Go语言:Go=C+Python,说明Go语言既有C静态语言程序的运行速度,又能达到Python动态语言的快速开发。

  1. 从C语言中继承了很多理念,包括表达式语法,控制结构,基础数据类型,调用参数传值,指针等,也保留了和C语言一样的编译执行方式及弱化的指针
  2. 引入包的概念,用于组织程序结构,Go语言的一个文件都要归属于一个包,而不能单独存在。
  3. 垃圾回收机制,内存自动回收,不需要开发人员管理
  4. 天然并发(重要特点
    1. 从语言层面支持并发,实现简单
    2. goroutine,轻量级线程,可实现大并发处理,高效利用多核。
    3. 基于CPS并发模型(Communicating Sequential Processes)实现
  5. 吸收了管道通信机制,形成Go语言特有的管道channel通过管道channel,可以实现不同的goroute之间的互相通信。
  6. 函数可以返回多个值。举例
    1. //写一个函数,实现同时返回 和,差
    2. func getSumAndSub(n1 int,n2 int)(int,int){ sum := n1 + n2 sub := n1 – n2 return sum,sub }
  7. 新的创新:比如切片slice、延时执行defer