go语言介绍|青训营笔记

108 阅读3分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第1篇笔记

什么是Go语言:

1.性能相比其他编程语言更高,通过协程实现高效的高并发 2.语法简单(如循环只有for循环),学习曲线平缓 3.丰富的标准库,大部分时间不需要使用第三方库,而且标准库的版本迭代更好,没有繁琐的配置和版本问题。 4.完善的工具链,官方库中提供了各式各样的工具 5.静态链接。 6.快速编译。 7.语言本身可在linux,mac,windows系统均兼容 8.拥有良好的垃圾回收机制

go的历史与语言优势:

go语言本身非常年轻,发布于2009年,C语言是上世纪70年代诞生的语言,C++是80年代诞生的,python是1991年诞生的,java是1995年诞生的,相比而言,go是目前流行语言中最年轻的,是在这些众多语言肩膀上诞生的语言,是由google支持的开源语言,属于静态的编译型语言,由三位语言专家共同编写。

go语言的优势:

简单易学:只有25个关键字 开发速度快:比java速度快很多,和python差不多 性能好:是编译型语言,编译完是字节码,“一处编译,到处运行”;同时可以很方便地引用C语言 支持高并发:使用协程,考虑了很多并发场景和资源消耗的问题。 生态环境好:很多优秀开源项目是用go做的,例如docker,K8S,ETCD,console,codis,TaiDB,都是基于golang开发的。

go的容器:

数组(Array)

数组的类型,取决于数组中的元素类型和数组的长度,其中数组的长度不可变

[N]T,N表示数组的长度,T表示数组的元素类型,比如[10]int

注意数组的长度和类型,只要有一项不一样,就不能算作一样的数组,属于不同的类型。

数组类型是值类型,不是引用类型,故函数传递数组参数的时候是值拷贝,函数内部使用的是数组的备份,不会影响初始的数组。

数据声明时未显式初始化的元素会隐式初始化为类型对应的0(如数字0、空字符串、false等)。

切片(Slice)

[]T,T表示切片中的元素类型

切片包含了对一段底层数组的动态引用,以及长度和容量

长度表示已经有几个元素,容量表示一共能放多少元素

映射(Map)

映射的定义:map[k]T

key,value结构:students["Jack"] = 11

可用delete删除元素:delete(students,"Jack")

也用make生成:students := make(map[string]int)

注意遍历顺序不是插入顺序(指for-range方法 for k,v := range students {})

golang没有内置集合(Set)类型,用Map来实现Set

数组、切片、映射这几个容器都不是并发安全的