编程基础知识之函数多返回值

目前的主流语言中除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语言革命性地在静态开发语言阵营中率先提供了多返回值功能。这个特性让开发者可以从原来用各种比较别扭的方式返回多个值的痛苦中解脱出来,既不用再区分参数列表中哪几个用于输入,哪几个用于输出,也不用再只为了返回多个值而专门定义一个数据结构。

posted on 2015-11-18 23:54  米加米加  阅读(158)  评论(0编辑  收藏  举报