这是我参与「第三届青训营 -后端场」笔记创作活动的的第1篇笔记
Go基础
Goroutine是Go最显著的特征,它用类协程来处理并发单元内置完整测试框架,其中包括单元测试、性能测试、代码覆盖率、数据竞争,以及用来调优的 pprof,这些都是保障代码能正确而稳定运行的必备利器。
多个goroutine中,Go语言使用通道(channel)进行通信,通道是一个内置的数据架构
//创建字符串类型的通道
channel:=make(chan string)\
//创建producer(")函数并发多个goroutine,
go producer("cat",channel)、 go producer("cat",channel)\
然后通过channel来给其他函数传递数据,传递数据的过程有点像Handler,但比他简单。
Go语言基本语法
Go变量声明
var a int,(变量类型在最后,var是声明变量的关键字)\- 批量声明变量的方法:
var (
a int
b string
c []float32
d func() bool
e struct {
x int
}
)
- 名字 := 表达式,也可以像python 一样不指定变量类型
Go语言会在编译时检查每个变量是否使用过,一旦出现未使用的变量,就会报编译错误。如果不能理解变量的作用域,就有可能会带来一些不明所以的编译错误。
Go的赋值语句中: - 多重赋值(这个感觉好有意思)
a,b=b,a - 匿名变量 匿名变量不占用内存空间,不会分配内存。匿名变量与匿名变量之间也不会因为多次声明而无法使用。
func GetData() (int, int) {
return 100, 200
}
func main(){
a, _ := GetData()
_, b := GetData()
fmt.Println(a, b)
}
- 全局变量 在函数体外声明的变量称之为全局变量,全局变量只需要在一个源文件中定义,就可以在所有源文件中使用,当然,不包含这个全局变量的源文件需要使用“import”关键字引入全局变量所在的源文件之后才能使用这个全局变量。
- 浮点数和整数 浮点数在声明的时候可以只写整数部分或者小数部分
const e = .71828 // 0.71828
const f = 1. // 1