第一部分:Go语言的基本概述
第二部分:Go语言的特点应用
- Go语言一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言;
- Go语言是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易;
- Go语言的诞生为超线程技术和CPU多核化的发展以及并行计算提供了技术支持;
- Go语言是由谷歌公司Robert Griesemer,Rob Pike,Ken Thompson主持开发;
- 2007年9月20日,开始设计Go语言
- ......
- 2009年11月10日,宣布开源Go语言
- ......
- 2012年3月28日,Go 1.0版本发布
- ......
- 2013年5月13日,Go 1.5版本发布
- ......
- 2017年8月24日,Go 1.9版本发布
- ......
- 2018年8月24日,Go 1.11版本发布
- ......
- 2019年9月4日,Go 1.13版本发布
多数现代编程语言(如Java,Python等)都来自90年代的单线程环境。虽然一些编程语言的框架在不断地提高多核资源使用效率,例如 Java 的 Netty 等,但仍然需要开发人员花费大量的时间和精力搞懂这些框架的运行原理后才能熟练掌握。
Go于2009年发布,当时多核处理器已经上市。Go语言在多核并发上拥有原生的设计优势,Go语言从底层原生支持并发,无须第三方库、开发者的编程技巧和开发经验。Go语言的并发是基于goroutine的,goroutine类似于线程,但并非线程。可以将 goroutine理解为一种虚拟线程。Go语言运行时会参与调度goroutine,并将goroutine 合理地分配到每个CPU中,最大限度地使用CPU性能。开启一个goroutine的消耗非常小(大约2KB的内存),你可以轻松创建数百万个goroutine。
同其他现代高级语言(如Java/Python)相比,使用C/C++的最大好处是它们的性能。因为C/C++是编译型语言而不是解释的语言。 处理器只能理解二进制文件,Java和Python这种高级语言在运行的时候需要先将人类可读的代码翻译成字节码,然后由专门的解释器再转变成处理器可以理解的二进制文件。同C/C++一样,Go语言也是编译型的语言,它直接将人类可读的代码编译成了处理器可以直接运行的二进制文件,执行效率更高,性能更好。
-
1.计算机硬件技术更新频繁,性能提高很快,主流编程语言发展明显落后于硬件,不能合理利用多核CPU的优势提升软件系统性能。
-
2.软件系统复杂度越来越高,维护成本越来越高,目前缺乏一个足够简介高效的编程语言。【现有编程语言:1.风格不统一。2.计算能力不够。3.处理大并发不够好。】
-
3.企业运行维护很多C/C++的项目,程序运行的速度虽然很快,但是编译速度较慢,同时存在内存泄露的一系列问题需要解决。

2.1.Go语言的特点
Go语言保证了既能达到静态编译语言的安全和性能,又能达到动态语言开发维护的高效,使用表达式形容Go语言:Go=C+Python,说明Go语言既有C静态语言程序的运行速度,又能达到Python动态语言的开发速度。
1.继承C语言的理念,包括表达式语法,控制结构,基础数据类型,调用参数传值,指针等,也保留了和C语言一样的编程执行方式及弱化的指针。
// 实例:指针
func testPtr(num *int){
*num = 20
}
2.引入包的概念,用于组织程序结构,Go语言的一个文件都要归属一个包,而不能单独存在。
```html
// 实例:导包
package main // 该文件所在的包,每个文件必须归属于一个包
import "fmt"
func sayOk(){
fmt.Println("OK")
}
3.垃圾回收机制,内存自动回收,不需要开发人员管理,不需要手动清理内存。
4.天然并发,相对于其他语言的重要的特点,从语言层面支持并发,实现简单;
// 实例:goroutine,轻量级线程,可实现大并发处理,高效利用多核;基于CPS并发模型(Communication Sequential Processes)实现。
func test() {
fmt.Println("Hello, World")
}
func main() {
go test()
}
5.吸收了管道通信机制,形成Go语言特有的管道channel通过管道channel,可以实现不同的goroute之间的相互通信。
6.函数可以返回多个值。
// 实例:返回值
func getSumAndSub(n1 int, n2 int)(int, int){
sum := n1 + n2
sub := n1 - n2
return sum, sub
}
7.新的创新:比如切片slice、延时执行defer
8.吹牛逼口号:并发高效,性能强悍,数据安全,语法简洁

2.2.Go语言的用途
应用场景:云计算开发,区块链技术,容器虚拟化,⼤数据开发,人工智能,数据分析,科学计算,运维开发,爬虫开发,游戏开发

浙公网安备 33010602011771号