命名函数的返回参数有什么好处?
func namedReturn(i int) (ret int) {
ret = i
i += 2
return
}
func anonReturn(i int) int {
ret := i
i += 2
return ret
}
命名它们有一些好处:
还有缺点,主要是很容易通过声明相同名称的变量来意外地遮盖它们。
有效的Go中有一个关于命名结果参数的部分:
可以给Go函数的返回或结果“参数”指定名称,并将其用作常规变量,就像传入参数一样。命名后,函数开始时会将它们初始化为零值。如果函数执行不带参数的return语句,则将结果参数的当前值用作返回值。
名称不是强制性的,但它们可以使代码更短,更清晰:它们是文档。如果我们命名nextInt的结果,则显而易见,返回的int是哪个。
func nextInt(b []byte, pos int) (value, nextPos int) {
[…]
问题内容: 什么时候以及为什么有人要执行以下操作: 你做过吗?您能否分享您的经验? 问题答案: 如果重载,则需要显式将null强制转换为,以便选择正确的重载: 调用varargs函数时,需要进行强制转换的情况是: 最后一行将产生以下警告: Example.java:26:警告:varargs方法的无变量调用,最后一个参数的参数类型不精确; 强制转换为varargs调用 强制转换为非varargs调
问题内容: 我试图定义一个可以容纳闭包的变量,并且使用Swift的速记参数名称遇到了一些困难。采取以下代码段: 这给了我编译错误 ‘(String,String)’无法转换为’String’ 。当我修改闭包时,返回带有第一个参数值的字符串,我将两个参数值都返回到一个元组中。 但是,如果我修改闭包以打印第二个参数,则会按预期打印正确的参数。 我感觉自己在这里做些愚蠢的事情,但是我找不到任何解释为什么
问题内容: 我是一名编程初学者,对函数的返回值有疑问。 我正在学习Java。 我已经附上了我的书中具有经典选择排序功能的代码。 现在显然来自本书的代码可以正常工作。但是,主要功能中的以下三行是我的问题的基础: int [] a = new int [] {1,9,2,8,3,7,4,6,5}; 排序(a); if(ascending(a))System.out.println(“ Works”
问题内容: 只是出于好奇。 数字似乎不太合逻辑。顺便说一句,就像或返回假。这是javascript的特性之一,还是有原因呢? 编辑:谢谢你的回答。但是,要让所有人适应现实并非易事。阅读答案和Wiki我了解得更多,但仍然有类似 与NaN的比较始终会返回无序结果,即使与自身进行比较也是如此。比较谓词是信令或非信令,信令版本表示此类比较的无效异常。相等和不相等谓词是无信号的,因此x = x返回false
问题内容: 我知道Go没有任何构造函数,而是在其中使用a ,但是根据此示例。 他们总是回来。为什么仅仅返回就还不够? 更新资料 我尝试过为简单的结构返回创建的对象,这很好。因此,我想知道返回地址是否是构造函数的标准方法或其他方法。 谢谢。 问题答案: 如前所述,是的,规范允许您返回值(作为非指针)或指针。这只是您必须做出的决定。 什么时候返回指针? 通常,如果您返回的值作为指针“更有用”。什么时候
问题内容: 这是简单的代码,我没有得到设置位图的结果,而是得到了null。谁能告诉我我在哪里犯错了? 更新 好的,所以我无法像我想的那样将文本转换为图像。这样呢 这会创建位图吗? 问题答案: 从文档中: 返回 解码的位图;如果无法解码图像,则 返回 null。 字符串“ test”中涉及的字节不是有效的位图,对吗? 如果将文本“ test”保存在名为or 等的文件中,并试图在Windows中打开它