[Golang]一道考察defer与命名返回值的题目

题目

输出: 4 1 3

解释

  1. 当函数有可命名结果形参时,结果形参的初始值被设置为零值,函数的return语句会设置结果形参的值
  1. 当函数有可命名结果形参时,defer函数是可以修改它,然后再将它的值返回

DeferFunc1 和DeferFunc3是两个有命名结果形参的函数,结果形参的赋值过程为: DeferFunc1 : t:= 0 t = 1 t +=3 -> t = 4

DeferFunc3: t:=0 t = 2 t += 1 -> t = 3

DeferFunc2 函数没有可命名结果形参,t只是个普通局部变量,defer无法对返回值做修改。返回1.

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏每日一篇技术文章

Swift3.0 - 类和结构体的区别

结论: 在数据量比较大的排序中,结构体排序的速度比较慢,因为结构体是值类型,排序的时候,需要大量的赋值运算。而对象只需要交换地址即可。

551
来自专栏用户2442861的专栏

C++编程思想重点笔记

引申:如何在const成员函数里修改成员 —— 按位和与按成员const 如果我们想要建立一个const成员函数,但仍然想在对象里改变某些数据,这时该怎...

621
来自专栏Python爬虫与算法进阶

Leetcode Solutions(一) two-sum

在map[整数]整数的序号中,可以查询到a的序号。这样就不用嵌套两个for循环了。

1204
来自专栏bboysoul

1077: 输入入门(2)

描述:计算A+B 输入:输入第1行为一个整数n(1≤n≤10),代表测试的组数。下面有n组测试数据,每组1行,为2个整数,为A, B。 输出:输出A+B的值...

602
来自专栏余林丰

虚拟机类加载机制(1)——类加载时机

由于道行不够深,所以此篇类加载机制的讲解主要来自于《深入理解Java虚拟机——JVM高级特性与最佳实践》的第7章 虚拟机类加载机制。 在前面《初识Java反射》...

1969
来自专栏机器学习和数学

[数据结构与算法] 链接表总结

上一次说到了顺序表,链接表和顺序表一样,也是线性表。那为什么有了线性表还要有链接表呢?总之就是当数据过大时,顺序表存在一些存储方面的限制,而链接表比顺序表要更有...

2747
来自专栏塔奇克马敲代码

第 17 章 标准库特殊设施

1413
来自专栏blackheart的专栏

[C#2] 1-泛型

1. 泛型概述 泛型是一种类型的多态;比如当我们写一个栈或者队列的时候,需要指定其数据类型,int一份代码,string一份代码,object的一份代码, 这些...

21710
来自专栏進无尽的文章

Swift| 基础语法(一)

总结下 swift下的基础语法,里面涉及到:常量&变量、Swift中的数据类型、逻辑分支、循环、字符串相关、数组和字典、方法的书写调用等内容,考虑到阅读体验分多...

632
来自专栏阿凯的Excel

Python读书笔记6(列表-基本特性)

前期和大家分享了数字和字符串,如果数字和字符串都是单一的个体的话,列表就是将多个数字和字符串组合在一起,形成列表。列表概念与数组概念类似,是包含任意对象的有序集...

2645

扫码关注云+社区