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语句。

golang 没有名字参数_Go 返回参数命名相关推荐

  1. Google Maps Api Geocoding 传递参数和返回参数的解析(Json)

    转https://blog.csdn.net/zkdemon/article/details/7019117 Google Geocoding API    http://code.google.co ...

  2. $emit传递多个参数_Go语言参数传递方式

    一.函数参数传递方式 函数参数传递有2种方式:值传递和引用传递. 值传递是指调用函数时将参数值复制一份到函数,如果对函数参数进行修改,影响不到实际参数. 引用传递是指调用函数时将参数的指针传递到函数中 ...

  3. SpringBoot→请求参数、返回参数、文件上传、拦截器、异常处理、定时任务、异步任务

    web请求static静态资源 localhost:8080/cat.png localhost:8080/test.html localhost:8080/abc/test.html localho ...

  4. py6_Python 内置函数/普通自定义函数 及参数和返回值

    ################################################## 目录 活动简介 Python 函数参数 如何定义一个函数 示例定义一个无参函数 形参和实参的概念 ...

  5. go函数详解:函数定义、形参、返回值定义规范、函数内存分析、不支持重载、支持可变参数、基本数据类型和数组默认都是值传递的、支持自定义数据类型、函数返回值命名

    引入 [1]为什么要使用函数: 提高代码的复用型,减少代码的冗余,代码的维护性也提高了 [2]函数的定义: 为完成某一功能的程序指令(语句)的集合,称为函数. [3]基本语法 func 函数名(形参列 ...

  6. golang 函数一 (定义、参数、返回值)

    对于GoLang函数的定义或者说理解: 函数是结构化编程中最小的模块单元,日常开发过程中,将复杂的算法过程分解为若干个小任务(代码块),使程序的结构性更清晰,程序可读性提升,易于后期维护和让别人读懂你 ...

  7. golang 没有名字参数_在 Golang 中用名字调用函数

    上个星期,我写了篇<Function call by name in Golang>.由于是英文的,所以被人诟病(说谁,谁知道!).好吧,现在用中文重新写一遍. Golang 中的函数跟 ...

  8. Golang 具名返回参数 具名返回值 定义方法

    1. 具名返回值就是在定义函数的时候,在定义函数返回值的时候,既定义返回参数的数据类型,也定义返回参数的名称. 2. 具名返回参数的优势是,可以直接在函数内部使用与操作函数的返回值. 3. 具名返回参 ...

  9. java分布式对象——远程方法中的参数和返回值+远程对象激活

    [0]README 1)本文文字描述转自 core java volume 2, 旨在学习 java分布式对象--远程方法中的参数和返回值+远程对象激活 的相关知识: [1]远程方法中的参数和返回值 ...

最新文章

  1. .substr()在字符串每个字母前面加上一个1
  2. linux内核网络协议栈--kernel bridge转发逻辑(十一)
  3. angular js一factory,service,provider创建服务
  4. 给hadoop 2.7.1 定制树莓派参数
  5. 各大软件的 java版本_Java 各个版本的软件 1.4 1.5 5.0 6.0
  6. java 实例化xpath_Java XPath示例教程
  7. 拥抱Flutter,从0到1构建大前端应用
  8. Linux查看vga分辨率,调整ubuntu启动界面vga分辨率的方法
  9. teamviewer 服务器系统,远程支持服务器搭建teamviewer
  10. 仿微信雷达寻好友动画
  11. android运行微信小程序,【报Bug】微信小程序在Android真机运行时报错atob is not a function...
  12. linux消息分发机制,RabbitMQ消息分发轮询和Message Acknowledgment
  13. PDF编辑技巧 PDF怎么修改文字
  14. 龙之谷怎么进去服务器维护,龙之谷端游服务器爆满怎么进
  15. 【7gyy】cdma无线通讯上使用的技术
  16. 新开发的微信小程序怎样推广引流?
  17. 计算机组成原理肖铁军第二版答案,计算机组成原理(肖铁军编)第二章习题及答案...
  18. Android Recovery相关流程汇总
  19. 图形2d,3d加速简介
  20. CSDN写漂亮博客的技巧--改字体大小颜色、插入多列表格、字体高亮等

热门文章

  1. ThinkPHP 3.2.3 关联模型的使用
  2. C#中使用DES和AES加密解密
  3. 如果没有,那么就去创造
  4. MOTOMAN-SV3X运动学建模验证图
  5. matlab中腐蚀图像的编写,Matlab实现二值图像的腐蚀算法源代码
  6. iview tag 标签点击事件
  7. 在循环里创建数据库连接,严重影响数据库性能
  8. spring框架中@PostConstruct的实现原理
  9. eclipse中git解决冲突
  10. mvc框架异常处理机制