golang的一些基础知识(二)| 青训营笔记

74 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 2 天

基础语法:

一、函数参数:

在golang中,当我们调用函数时,可以通过两种方式来传递参数。
第一种:为值传递。与java中形参类似,实际上值传递可以看作是将原来的参数复制了一份,然后将复制的这一份传到所调用的函数中。所以当我们用的是值传递时,如果在函数中对参数进行修改,是不会影响到实际参数的。
第二种:为指针传递。顾名思义也就是在我们调用函数时,将实际参数的地址传递到函数中,那么我们在函数里如果对参数进行修改的话,是会对实际参数造成影响的。

二、defer:

defer是一个语句,可以用来预定一个函数的调用。而当一个函数中存在多个defer语句时,会采用先进后出的顺序来执行。
比如:
func Demo(){
defer fmt.Print("1")
defer fmt.Print("2")
defer fmt.Print("3")
defer fmt.Print("4")
}
func main() {
    Demo()
}
那么最后的执行结果为:4321

三、slice切片:

golang中数组的长度是不可变的,但这样在一些场景中就不太合适。而切片也就被提供了出来。切片,也可以看作动态数组,即长度是不固定的,可以追加元素。
定义切片:var identifier []type,这种就是定义了个元素类型为type类型的切片。slice1 := make([]type, len),而这种是使用了make函数来定义切片,此切片的初始长度为len。除了可以定义初始长度,其实还可以定义容量。容量和切片长度不同,当我们增加元素的个数加上当前切片含有的元素个数,超出了切片的容量大小时,切片会扩展一倍的容量。通俗的来说,如果切片是个长方形,这个长方形分为许多个格子,用来存放数字,那么切片的长度就是存放的数字的个数,切片的容量就是格子的个数。