这是我参与「第五届青训营」伴学笔记创作活动的第1天,主要是对go的一些基础进行巩固。
在 Go 程序中,一行代表一个语句结束。每个语句不需要像其它语言一样以分号;结尾,其他语言如java,c,c++都是以;结尾。
数据类型 Go 编程语言中,数据类型用于声明函数和变量。数据类型的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存,就可以充分利用内存。那么需要用小数据的时候用小内存,以此来避免造成资源的浪费。
Go与其他语言相比,最大的特点定义顺序基本是反的,定义变量时会将数据类型放在后面。所以刚学的时候对于写go的代码的时候总感觉很难受,直到后面深入的理解,我才知道go的强大。 常量我就不多说了,这里值得注意的是:iota是特殊常量,一个可以被编译器修改的常量。
goroutine 是实现golang 中在语言级别中的轻量级线程,仅仅利用 go 就能立刻起一个新线程。多线程会引入线程之间的同步问题,在 golang 中可以使用 channel 作为同步的工具。通过 channel 可以实现两个 goroutine 之间的通信。通道可用于两个 goroutine 之间通过传递一个指定类型的值来同步运行和通讯。操作符 <- 用于指定通道的方向,发送或接收。如果未指定方向,则为双向通道。
默认情况下,通道是不带缓冲区的。发送端发送数据,同时必须又接收端相应的接收数据。通道可以设置缓冲区,通过 make 的第二个参数指定缓冲区大小。这里也需要了解一下缓冲区溢出的问题。