golang 没有名字参数_Go 返回参数命名

Go 返回参数命名

在Golang中,命名返回参数通常称为命名参数。Golang允许在函数签名或定义中为函数的返回或结果参数指定名称。或者可以说这是函数定义中返回变量的显式命名。基本上,它解决了在return语句中提及变量名称的要求。

通过使用命名返回参数或命名参数,只能在函数末尾使用return关键字将结果返回给调用方。 当函数必须返回多个值时,通常使用此概念。

因此,为了使用户感到舒适并增强代码的可读性,Golang提供了此功能。

声明命名的返回参数

要声明命名结果或返回参数,只需使用函数签名的返回类型部分。以下是在Golang中声明函数的一般语法。

声明没有命名返回参数的函数的语法:func function_name(Parameter-list)(Return_type){

// function body.....

}

在这里,Return_Type是可选的,它包含函数返回的值的类型。如果在函数中使用Return_Type,则必须在函数中使用return语句。

使用命名的返回参数声明函数的语法:func function_name(Parameter-list)(result_parameter1 data__type,result_parameter2 data_type,…。){

//函数体…..

//返回

}

这(result_parameter1 data__type, result_parameter2 data_type, ....)是命名返回参数列表及其类型。您可以声明n个命名的返回参数。

示例:在下面的程序中,func calculator(a, b int) (mul int, div int)代码行包含命名的返回参数。函数末尾的return语句不包含任何参数。Go编译器将自动返回参数。

示例package main

import "fmt"

// Main Method

func main() {

//在这里调用函数

//函数返回两个值

m, d := calculator(105, 7)

fmt.Println("105 x 7 = ", m)

fmt.Println("105 / 7 = ", d)

}

// 具有命名参数的函数

func calculator(a, b int) (mul int, div int) {

//在这里,简单的赋值就可以

//并初始化它的值

mul = a * b

div = a / b

//这里有return关键字

//没有任何结果参数

return

}

输出:105 x 7 =  735

105 / 7 =  15

重要事项如果所有命名的返回参数的类型是公共的或相同的,则可以指定公共数据类型。将下面的代码与上面阅读的示例进行比较,以便更好地理解。//有命名参数的函数

func calculator(a, b int) (mul, div int) {

此处,mul和div变量均为int类型。因此,您还可以声明具有通用数据类型的命名参数,例如函数变量(即a和b)

使用命名返回参数将增强代码的可读性,因为只需读取函数签名就可以知道返回参数。

使用命名的返回参数后,return语句通常称为"裸返"。

默认情况下,Golang用零值定义所有命名变量,函数将能够使用它们。如果函数未修改值,则将自动返回零值。

如果您将使用短声明运算符(:=)初始化命名的返回参数,则将给出错误,因为它们已被Go编译器初始化。因此,您可以使用简单的赋值方式(=)将值分配给命名的返回参数。//具有命名参数的函数

func calculator(a, b int) (mul int, div int) {

//在这里,它将抛出一个错误

//因为已经定义了参数

//在函数签名中

mul := a * b

div := a / b

//这里有return关键字

//没有任何结果参数

return

}

命名返回参数或裸返回语句仅适用于短函数签名。对于更长的函数,显式返回结果参数(不使用命名的返回参数)以保持代码的可读性。

对于命名返回参数,必须使用"裸返"的return语句。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/426295.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

11 Python之初识函数

---恢复内容开始--- 1. 什么是函数?   f(x) x 1   y x 1   函数是对功能或者动作的封装 2. 函数的语法和定义   def 函数名():     函数体   调用:   函数名() 3. 关于函数的返回值   return : 返回     1. 当程序没写过return, 不返回任何结果. 如…

python对象属性在引用时前面需要加()_python基础-面向对象进阶

实现授权的关键点就是覆盖__getattr__方法1、通过触发__getattr__方法,找到read方法示例1:1 importtime2 classFileHandle:3 def __init__(self,filename,moder,encodingutf-8):4 self.fileopen(filename,mode,encodingencoding)5 self.modemode6 self.encodingenco…

linux(4):Linux逻辑卷详解总结

LVM是逻辑卷管理(Logical Volume Manager)的简称,它是建立在物理存储设备之上的一个抽象层,允许你生成逻辑存储卷,与直接使用物理存储在管理上相比,提供了更好灵活性。 LVM将存储虚拟化,使用逻辑卷,你不会受限于物理磁盘的大…

您的计算机和打印机上的打印纸设置不匹配,打印纸张不符合打印要求、类型与设置不符-打印机上门维修复印机...

从网上复制了一个以tab排版的表格,智能导入Calc很顺利,由于用的是OpenOffice打印的时候却遇到了麻烦,A4纸竖着打印会丢失栏目,按MSOffice下的老地方去找横向打印设置,未果,最后还是在网上找到了答案&#x…

Android 布局优化

include标签共享布局 include标签常用于将布局中的公共部分提取出来供其他layout共用,以实现布局模块化,这在布局编写方便提供了大大的便利。例如我们在进行App开发时基本每个页面都会有标题栏,在不使用include的情况下你在每个界面都需要重新…

计算机二级1605错误,word 出现windows installer 1605错误

您好,我们了解到您在启动Word 2013时遇到Windows installer 出现错误1605 问题。该问题有可能是Word模板损坏获取优化清理操作导致系统文件损坏。建议您尝试以下方法是否能否解决问题:1.退出所有Office程序2.确保以下文件夹内无任何文件:C:\P…

前端扁平化数据转树形数据_把平级数据变成树形数据

为了记住这个方法:转化数据[{element:图片,id:1,pid:0},//count1{element:大图片,id:2,pid:1},{element:png,id:3,pid:2},{element:jpeg,id:4,pid:2},{element:gif,id:5,pid:2},{element:gif11,id:6,pid:5},{element:gif111,id:7,pid:6},{element:gif222,id:8,pid:6…

曾国藩:诚敬静谨恒!

曾国藩:诚敬静谨恒。诚:民无信不立!人与人交往,最讲究诚字。与他人坦诚,说话有诚信,对人诚心,自然会受到他人喜爱和尊重。敬:月满则亏,物盛则衰!要想成大事,需…

java学习(103):字符串概述

//字符串概述 public class test40 {public static void main(String[] args){char[] str1{1,2,3,4,5,6,7,8,9};String str2new String("我是歌谣");String str3new String(str1);String str4new String(str1,3,4);String str5new String("\"\\");Sys…

计算机服务哪些不能关闭,Win7系统下哪些系统服务不能关闭

为了让系统能够更快的启动,很多用户会选择禁用一些系统服务,但并不是所有的服务都能够禁用关闭的,下面是小编与大家分享的Win7系统下哪些不能关闭的服务,保证大家的电脑能够正常的运行。第一、DHCPClient服务这款服务是电脑获取IP…

java学习(104):字符串equals,charAt,endwith,startwith方法

//String方法 public class test41 {//比较两个人的姓名是否相同public static boolean eqName(String name1,String name2){return name2.equals(name1)?true:false;}//按照给定的字符的索引返回public static char findNUM(String resouse,int index){if(index<0||index&…

kafka operation

运行环境&#xff1a;mac os 1. 启动zookeeper ./bin/zookeeper-server-start /usr/local/etc/kafka/zookeeper.properties 2. 启动kafka服务 ./bin/kafka-server-start /usr/local/etc/kafka/server.properties 3. 查看topic列表 ./bin/kafka-topics --list --zookeeper local…

csirs参考信号_发送和接收点(TRP)及信道状态信息参考信号(CSI-RS)传输的方法与流程...

本文中所公开的一个或多个实施例涉及发送和接收点(trp)及信道状态信息参考信号(csi-rs)传输的方法。背景技术&#xff1a;对于使用更高频率的新无线电(nr)&#xff0c;可以引入使用数字和模拟电路来执行波束成型的混合(模拟/数字)波束成型系统。在混合波束成型系统中&#xff0…

java学习(105):字符串indexof,spilt,substring方法

public class test44 {//分割字符串数组public static String[] spitString(String resource,String tag){return resource.split(tag);} }测试 public class test43 {public static void main(String[] args){//String的indexofString mail"javascript.com";System…

初中人教版计算机具体课程,构建信息技术支持下的中学数学课程

摘要&#xff1a;信息时代&#xff0c;数学教育面临着前所未有的机遇和挑战。本文首先结合信息技术的特点&#xff0c;阐述了数学教学方式发生的变化。在此背景下&#xff0c;探讨了数学教学内容也应随之发生变化&#xff0c;数学课程应当尽可能地使用计算器和计算机&#xff0…

redis:Invalid input of type: 'bool' type. Convert to a byte,string or number first

分析:出现此错误的原因是redis版本过高导致的,因此降低redis版本即可 解决: pip install -U redis2.10.6转载于:https://www.cnblogs.com/dakewei/p/10079023.html

mysql创建表格1warning_MySQL:创建、修改和删除表

在说创建、修改和删除表前&#xff0c;我们还是要进行一个操作的简单说明&#xff1a;1.登陆数据库系统在命令行中登陆MySQL数据库管理系统&#xff0c;输入一下内容&#xff1a;mysql -h localhost -u root -p很多人都知道这个&#xff0c;但是其中参数的具体表示什么我们还是…

朴素贝叶斯应用:垃圾邮件分类

1. 数据准备&#xff1a;收集数据与读取 2. 数据预处理&#xff1a;处理数据 3. 训练集与测试集&#xff1a;将先验数据按一定比例进行拆分。 4. 提取数据特征&#xff0c;将文本解析为词向量 。 5. 训练模型&#xff1a;建立模型&#xff0c;用训练数据训练模型。即根据训练样…

java学习(106):字符串tocharArray,tolowercase,touppercase方法

public class test45 {//将给定的字符串返回成一个数组public static char[] toArrayFromString(String target){return target.toCharArray();}//大小写转换根据所给的第二个参数取决于大小写转换public static String toLowerUpper(char[] chs,char ch){if(chl||chL)return …

win10计算机启动一分钟重启,Win10开机提示电脑将在一分钟后自动重启怎么办?...

Win10开机提示“你的电脑将在一分钟后自动重启”怎么办&#xff1f; 最近一位用户又遇到了开机问题&#xff0c;该用户在开机后总是提示“你的电脑将在一分钟后自动重启&#xff0c;Windows遇到问题并且需要重新启动&#xff0c;你应立刻关闭此消息并保存你的工作。”&#xff…