Go语言特点

Go语言特点教程

Go 语言(也叫 Golang)起源于 2007 年,并在 2009 年正式对外发布。Go 语言是非常年轻的一门语言,它的主要目标是 “兼具 Python 等动态语言的开发速度和 C 语言 以及 C++ 等编译型语言的性能与安全性”。

Go 语言是编程语言设计的又一次尝试,是对类 C 语言的重大改进,它不但能让你访问底层操作系统,还提供了强大的网络编程和并发编程支持。Go 语言的用途众多,可以进行网络编程、系统编程、并发编程、分布式编程。

Go 语言的推出,旨在不损失应用程序性能的情况下降低代码的复杂性,具有 “部署简单、并发性好、语言设计良好、执行性能好” 等优势,目前国内诸多 IT 公司均已采用 Go 语言开发项目。

Go 语言有时候被描述为 “C 类似语言”,或者是 “21 世纪的 C 语言”。Go 语言从 C 语言继承了相似的表达式语法、控制流结构、基础数据类型、调用参数传值、指针等很多思想,还有 C 语言一直所看中的编译后机器码的运行效率以及和现有操作系统的无缝适配。

因为 Golang 没有类和继承的概念,所以它和 Java 或 C++ 看起来并不相同。但是它通过接口(interface)的概念来实现多态性。

Go 语言有一个清晰易懂的轻量级类型系统,在类型之间也没有层级之说。因此可以说 Go 语言是一门混合型的语言。

此外,很多重要的开源项目都是使用 Go 语言 开发的,其中包括 Docker、Go-Ethereum、Thrraform 和 Kubernetes。

Go语言是编译型语言

Go 语言使用编译器来编译代码。编译器将源代码编译成二进制(或字节码)格式;在编译代码时,编译器检查错误、优化性能并输出可在不同平台上运行的二进制文件。要创建并运行 Go 语言程序,程序员必须执行如下步骤:

  • 使用文本编辑器创建 Go 语言程序

  • 保存文件

  • 编译程序

  • 运行编译得到的可执行文件

这不同于 Python、Ruby 和 JavaScript 等语言,它们不包含编译步骤。

Go 语言自带了编译器,因此无须单独安装编译器。如果你要创建系统程序,或者基于网络的程序,Go 语言是很不错的选择。

作为一种相对较新的语言,它是由经验丰富且受人尊敬的计算机科学家设计的,旨在应对创建大型并发网络程序面临的挑战。

Go语言交叉编译

Go 语言支持交叉编译,也就是说 Go 语言可以在 Windows上开发,然后在 Linux 上运行。

这是第一门完全支持 UTF-8 的编程语言,这不仅体现在它可以处理使用 UTF-8 编码的字符串,就连它的源码文件格式都是使用的 UTF-8 编码。Go 语言做到了真正的国际化。

Go语言语法

Go 语言保证了既能到达静态编译语言的安全和性能,又达到了动态语言开发维护的高效率。

使用一个表达式来形容 Go 语言:Go = C + Python , 说明 Go 语言既有 C 静态语言程序的运行速度,又能达到 Python 动态语言的快速开发。

继承C语言理念

从 C 语言中继承了很多理念,包括表达式语法,控制结构,基础数据类型,调用参数传值,指针等等,也保留了和 C 语言一样的编译执行方式及弱化的指针,比如以下代码:

//go 语言的指针的使用特点 func testPtr(num *int) { *num = 20 }

引入包的概念,用于组织程序结构,Go 语言的一个文件都要归属于一个包,而不能单独存在。

垃圾回收

垃圾回收机制,内存自动回收,不需开发人员管理。

天然并发 (重要特点)

  • 从语言层面支持并发,实现简单。
  • goroutine,轻量级线程,可实现大并发处理,高效利用多核。
  • 基于 CPS 并发模型(Communicating Sequential Processes ) 实现。
  • 吸收了管道通信机制,形成Go语言特有的管道 channel ,通过管道 channel , 可以实现不同的 goroute 之间的相互通信。

返回多个值

函数可以返回多个值,比如如下代码:

//写一个函数,实现同时返回和,差 func getSumAndSub(n1 int, n2 int) (int, int) { sum := n1 + n2 sub := n1 - n2 return sum , sub }

其他创新

  • 比如切片 slice
  • 延时执行 defer。

Go语言特点总结

Go 语言保证了既能到达静态编译语言的安全和性能,又达到了动态语言开发维护的高效率

使用一个表达式来形容 Go 语言:Go = C + Python , 说明 Go 语言既有 C 静态语言程序的运行速度,又能达到 Python 动态语言的快速开发。