Go关键字--defer


友情推广
在这里插入图片描述

defer

defer关键字,用于在函数调用结束之后,再去执行defer后边的函数。defer语法

defer  函数

下边来看一段例子:

package main

import "fmt"

func demo() int {
	defer fmt.Println("函数调用结束之后,调用defer后边的函数")
	fmt.Println("begin")
	return 200
}

func main() {
	fmt.Println(demo())
}

输出信息是:

begin
函数调用结束之后,调用defer后边的函数
200

在调用demo函数后,defer虽然在函数内第一行,但是却是最后被执行。defer关键字能够改变函数内代码执行顺序。如果在defer后想要调用多个函数,应该怎么办了?一种简单的实现方式是使用闭包:

package main

import "fmt"

func demo() int {
	defer func() {
		fmt.Println("func1")
		fmt.Println("func2")
	}()
	fmt.Println("begin")
	return 200
}

func main() {
	fmt.Println(demo())
}

输出信息是:

begin
func1
func2
200

defer后边调用的函数如果有返回值,则这个返回值将会被丢弃。

package main

import "fmt"

func demo() int {
	defer func() int {
		return 100
	}()
	return 8
}

func main() {
	fmt.Println(demo())
}

输出信息是:

8

上边的示例代码中,demo函数的返回值是8。 defer后边调用的函数的返回值并不能作为demo函数的返回值。

猜你喜欢

转载自blog.csdn.net/hzwy23/article/details/82874569
今日推荐