美文网首页
1.2.3函数多返回值

1.2.3函数多返回值

作者: rosekissyou | 来源:发表于2020-06-23 17:46 被阅读0次

目前的主流语言中除Python外基本都不支持函数的多返回值功能,不是没有这类需求,可能

是语言设计者没有想好该如何提供这个功能,或者认为这个功能会影响语言的美感。

比如我们如果要定义一个函数用于返回个人名字信息,而名字信息因为包含多个部分——姓

氏、名字、中间名和别名,在不支持多返回值的语言中我们有以下两种做法:要么专门定义一个

结构体用于返回,比如:

struct name

{

char first_name[20];

char middle_name[20];

char last_name[20];

char nick_name[48];

};

// 函数原型

extern name get_name();

// 函数调用

name n = get_name();

或者以传出参数的方式返回多个结果:

// 函数原型

extern void get_name(

/*out*/char* first_name,

/*out*/char* middle_name,

/*out*/char* last_name,

/*out*/char* nick_name);

// 先分配内存

char first_name[20];

char middle_name[20];

char last_name[20];

char nick_name[48];

// 函数调用

get_name(first_name, middle_name, last_name, nick_name);

Go语言革命性地在静态开发语言阵营中率先提供了多返回值功能。这个特性让开发者可以

从原来用各种比较别扭的方式返回多个值的痛苦中解脱出来,既不用再区分参数列表中哪几个用

于输入,哪几个用于输出,也不用再只为了返回多个值而专门定义一个数据结构。

在Go语言中,上述的例子可以修改为以下的样子:

func getName()(firstName, middleName, lastName, nickName string){

return "May", "M", "Chen", "Babe"

}

因为返回值都已经有名字,因此各个返回值也可以用如下方式来在不同的位置进行赋值,从

而提供了极大的灵活性:

func getName()(firstName, middleName, lastName, nickName string){

firstName = "May"

middleName = "M"

lastName = "Chen"

nickName = "Babe"

return

}

并不是每一个返回值都必须赋值,没有被明确赋值的返回值将保持默认的空值。而函数的调

用相比C/C++语言要简化很多:

fn, mn, ln, nn := getName()

如果开发者只对该函数其中的某几个返回值感兴趣的话,也可以直接用下划线作为占位符来

忽略其他不关心的返回值。下面的调用表示调用者只希望接收lastName的值,这样可以避免声

明完全没用的变量:

_, _, lastName, _ := getName()

我们会在第2章中详细讲解多重返回值的用法。

相关文章

  • 1.2.3函数多返回值

    目前的主流语言中除Python外基本都不支持函数的多返回值功能,不是没有这类需求,可能 是语言设计者没有想好该如何...

  • Swift-函数

    函数的定义与调用 无参数函数,有返回值(返回值类型String) 多参数函数,有返回值(返回值类型String) ...

  • swift学习笔记(6)--- 函数

    1、函数的定义与调用 2、函数参数与返回值 无参数函数 多参数函数 无返回值函数 多重返回值函数 可选元组返回类型...

  • 函数

    函数初识 函数的参数 函数的多个参数 可变参数 参数传递 函数的返回值 函数的多返回值 return语句 函数中变...

  • go-day2

    函数 函数的定义 基本格式 参数的格式 有参数的函数 参数类型简写 可变参数 返回值的格式 有返回值 多返回值 命...

  • Swift3.0 函数整理

    函数定义 无参数函数 多参数函数 无返回值函数 多重返回值函数 可选元组返回类型函数 函数参数标签和参数名称 设定...

  • 6_函数

    函数参数与返回值 无参数函数 多参数函数 无返回值函数 省略返回箭头(->)和返回类型。 注意严格上来说,虽然没有...

  • Python函数笔记

    定义函数 基础语法 如果没有写return语句,函数执行之后会返回None 函数的返回值 可以有多个返回值,但是多...

  • Go语言 函数

    函数的一般结构组成如下所示 比如下面这个返回int类型的函数 函数的多返回值 关于函数的返回值命名Go语言中,返回...

  • Go语言学习——彻底弄懂return和defer的微妙关系

    疑问 前面在函数篇里介绍了Go语言的函数是支持多返回值的。 只要在函数体内,对返回值赋值,最后加上return就可...

网友评论

      本文标题:1.2.3函数多返回值

      本文链接:https://www.haomeiwen.com/subject/jcghfktx.html