zoukankan      html  css  js  c++  java
  • go defer看到你头晕的操作

    defer的执行时机

    要理解defer的玩法,就要知道他的执行时机,他的执行流程是这样的:

    go 语言中函数return 不是原子性的,他是分两步的
    第一步 :返回值赋值
    defer 执行
    第二步 :真正的return 返回
    函数中如果存在 defer 那么defer执行的时机是在第一步与第二步之间

    看到这里,我们一起来做几个demo

    接受挑战?如果你已经很熟悉defer

    func f1() int {
    	x := 5 
    	defer func() {
    		x++ 
    	}()
    	return x 
    }
    
    func f2() (x int) { 
    	defer func() {
    		x++   
    	}()
    	return 5 
    }
    
    func f3() (y int) { 
    	x := 5 
    	defer func() {
    		x++ 
    	}()
    	return x 
    }
    
    func f4() (x int) { 
    	defer func(x int) { 
    		x++ 
    	}(x) 
    	return 5 
    }
    
    func f5() (x int)  {
    	defer func (x int) int  {
    		x++
    		return x
    	}(x)
    	return 5 
    }
    
    func f6()(x int)  {
    	defer func (x *int)  {
    		(*x)++
    	}(&x)
    	return 5 
    }
    
    

    结语

    所以,大家能做出来这些题目吗 ?
    可以在评论区写下你的答案哦




    不懂的话,那就看我下一篇defer的解答

    欢迎留言评论~
  • 相关阅读:
    Python为什么要self
    安全散列算法(secure hash algorithm,SHA)
    傅里叶变换

    K 最近邻(k-nearest neighbours,KNN)算法
    贪婪算法
    狄克斯特拉算法
    广度优先搜索
    快速排序
    选择排序
  • 原文地址:https://www.cnblogs.com/issac-fan/p/12631876.html
Copyright © 2011-2022 走看看