GO语言基础-refer语句特性

GO语言独有的refer,后面可以跟一个简单语句或者跟一个匿名函数。refer必须处于一个方法或者函数中。

1. 简单理解:refer一定会在一个函数和方法全部执行完之后才会执行。可以理解成析构函数。

这里写图片描述

2.refer中的语句,在编译过程中就会生成语句,并将语句插入一个栈结构的队列中,遵循先入后出的原则。因此,如果defer运用在循环中,一定要注意这一点。

这里写图片描述

3.- 如果采用匿名函数形式,可以忽略返回定义,因为defer不会处理返回值。如果传入参数,defer中内容实际是在编译期间就将参数替换为对应的值,并插入到队列中,如下例,实际插入队列的代码为:
               fmt.Println(3)
               fmt.Println(2)
               fmt.Println(1)
               fmt.Println(0)

这里写图片描述

4.如果是采用不传值的匿名函数形式,那其中的变量实际插入队列的值是变量值,也就是fmt.Println(k),当函数执行完毕后,再执行队列中的语句,就是下面打印的结果。

这里写图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章