go return返回值屏蔽
创始人
2024-03-15 19:35:26
0

前言

最近需要写一个云环境的可执行程序,一般使用go语言,毕竟GC+原生运行,结合了不需要回收指针的能力和原生运行,但是在程序返回时,笔者看到一个sdk的源码懵了,返回的数据居然可以隐式返回。

准备

go 版本

笔者看到的代码,可以明显看到返回值是没写的,go却是一个强类型语言,返回值不匹配是会报错的,那么可以推断,这个go编译器自己把返回值变量的数据返回,所以没有定义返回值变量的不能这样使用。

demo 

1. 没有任何数据的时候

func Hello() (str string, e error) {return
}

那么就会返回一个初始化的符合要求的值,即返回值的变量(因为返回值的变量会默认初始化一个值) 

验证正确,空字符串+nil

2. 如果返回值不定义变量

func Hello() (string, error) {s, e := "", errors.New("error")fmt.Println(s, e)return
}

不可以,编译错误

3. 如果不使用返回值定义的变量

可以,但是返回的数据是返回值变量定义的数据

func Hello() (str string, err error) {s, e := "123", errors.New("error")fmt.Println(s, e)return
}

返回数据 

 4. 推断如果使用部分返回值变量

func Hello() (str string, err error) {s, err := "123", errors.New("error")fmt.Println(s, err)return
}

结果如下: 

5. 全部使用返回值变量

func Hello() (str string, err error) {str, err = "123", errors.New("error")fmt.Println(str, err)return
}

 返回结果

6. 部分返回值变量定义

func Hello() (str string, _ error) {str, err := "123", errors.New("error")fmt.Println(str, err)return
}

结果如下:

总结

go语言一个特性,如果定义了返回值变量,那么直接使用return可以返回返回值变量的数据,如果没有修改返回值变量就使用默认初始化的值。也可以部分定义返回值变量,但是没有定义变量的返回值只能返回默认初始值。

相关内容

热门资讯

明阳电气:已制定《市值管理制度... 证券之星消息,明阳电气(301291)12月26日在投资者关系平台上答复投资者关心的问题。 投资者提...
长白法院秉持高效便民理念,以柔... 长白县人民法院诉讼服务中心紧跟时代步伐,扎实做好先行调解工作,牢牢筑起维护社会和谐稳定的前沿防线。该...
安徽含山:政策上门零距离 惠农... 人民网记者 李希蒙 “我都快八十了,从没生过病,每年花400块买医保钱图个啥?”在“联通惠民 合作兴...
鑫铂股份:正在研究市值管理相关... 有投资者在互动平台向鑫铂股份提问:“贵司上市募资4.81亿元,两次增发募资16.6亿元,合计募集资金...
成都一酒店股东因经济纠纷割断天... 封面新闻记者 叶海燕 12月25日,成都一酒店员工田先生向封面新闻反映,因酒店股东间存在经济纠纷,外...
科技部:开展创新积分制政策实施... 据科技部官网12月26日消息,科技部办公厅发布关于开展创新积分制“揭榜挂帅”的通知,借鉴科技计划“揭...
日照中院通报2025年度道交纠... 齐鲁晚报·齐鲁壹点 徐艳 12月25日,日照中院召开全市法院2025年度道交纠纷多元化解工作情况通报...
国家卫健委:“十四五”以来全国... 12月26日,国家卫生健康委召开新闻发布会,介绍2025年全系统为民服务八件实事有关情况。国家卫生健...
“一杯青茶Talk Show”... 近日,团濉溪县委在濉溪古城石板街“街西青年”举办“一杯青茶Talk Show”活动,聚焦婚姻家庭等日...