之所以会写这篇文章,是因为在自学 Go 语言的过程,总会有些困惑和迷茫,总希望更好地学习下去,因此有了一些想法,在这里梳理一下,以便日后回过头来也可以看看此时此刻的想法。
一. Go 语言的出现
在具体学习 go 语言的基础语法之前,我们来了解一下 go 语言出现的时机及其特点。
Go 语言最初由 Google 公司的 Robert Griesemer、Ken Thompson 和 Rob Pike 三个大牛于 2007 年开始设计发明,他们最终的目标是设计一种适应网络和多核时代的 C 语言。所以 Go 语言很多时候被描述为“类 C 语言”,或者是“21 世纪的 C 语言”,当然从各种角度看,Go 语言确实是从 C 语言继承了相似的表达式语法、控制流结构、基础数据类型、调用参数传值、指针等诸多编程思想。但是 Go 语言更是对 C 语言最彻底的一次扬弃,它舍弃了 C 语言中灵活但是危险的指针运算,还重新设计了 C 语言中部分不太合理运算符的优先级,并在很多细微的地方都做了必要的打磨和改变。
Go 语言其实是 Golanguage 的简称,Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态强类型、编译并发型语言。Go 语言语法与 C 相近,但功能上有:内存安全,GC(垃圾回收),结构形态及 CSP-style 并发计算。该语言的吉祥物为金花鼠(gordon),如下图所示。
二、G 语言的理论学习
1、go 接口
所有接口的父接口是一个空类,interface{}替代任意类型
2、go 泛型
go1.7 之前的 go 泛型实现是使用 interface{}替代任意类型,需要使用 swich 做类型断言判断。1.7 之后引入了类似 java 语言的泛型概念,这种泛型概念就是模板<K,V>,在程序运行时需要 copy 一份模板生成对应类型的方法并写入内存中,故泛型系统程序运行时复杂性提升。
3、o 引用类型
切片、map(字典)、channe