Go 语言中的延迟执行【defer】(Let's Go 二十二)
函数作为另一个函数的形参,这就是Go当中的回调函数。
函数作为另一个函数的形参,这就是Go当中的回调函数。
在前面几篇文章,我们一直在使用Println、Printf
函数,你可能没有特别注意到,就是我们可以传入任意参数。而这种可以接受任意实参的函数,函数的形参极有可能是可变参数
,使用...type
可声明可变参数
,但必须是形参列表的最后
一上来乍一看,函数变量?这究竟是什么意思呢?你函数就函数,变量便是变量,这两者搞在一块,到底是几个意思呢? 其实啊,在Go
当中,函数
也是一种类型,既然是类型,那就可以向其它类型一样,给变量定义类型啊!而这个类型是函数
,所以函数类型
在前面几篇文章,接触到的最多的是main
函数。Go
如同c/c++
语言一样,对于声明函数也有属于自己的一套规则。
在提到关键字goto
,想必很多人都心有余悸吧,毕竟goto
可是编程语言界破坏代码可读性的罪魁祸首啊!以至于像c/c++
或类 c 的编程语言,都将goto
作为保留关键字,不建议使用,但如果你非要使用,谁人可阻止呢?
相较于c/c++
等的switch case
,Go
对switch
做了很大改进,case
与case
之间是不需要写上break
,也能跳出当前case
语句,而且,switch
表达式可以是任何类型的噢!
Go
当中只有for
循环结构,可没有像c/c++
语言有while
、do ... while
的。for
循环结构与if
分支结构一样,可以省略()
,左大括号{
必须与for
在同一行。
Go
当中的if
分支与c/c++
大致相同,只是可以省略条件表达式
的小括号()
,真的是,```G哦·``就是要特立独行。
列表插入函数的返回值会提供一个 *list.Element 结构,这个结构记录着列表元素的值以及与其他节点之间的关系等信息,从列表中删除元素时,需要用到这个结构进行快速删除。
其实,map
是一对key(键)
与value(值)
对应的无序集合,又称为关联数组
或字典
。