go语言学习笔记—基础—函数:函数的返回值(代码片段)

Locutus Locutus     2023-01-15     610

关键词:

go语言支持多返回值,可方便地获取函数调用后的多个返回值。

go语言经常使用多返回值中的最后一个参数返回函数执行中可能发生的错误。conn, err := connectToNetwork(),上面的代码返回两个参数,conn表示连接对象,err返回错误。

下文中的”指定返回值”,仅指return后面直接跟着返回值。


1. 函数不指定返回值

package main

import (
    "fmt"
)

// 函数返回值为空
func GetMoney()
    fmt.Println("money")
    return


func main()
    GetMoney()


// money

2. 函数指定返回值

  • 带有变量名的返回值(命名返回值)

go语言支持对返回值命名,这样返回值就有变量名和类型。命名返回值变量的默认值为类型零值,即数值为0,字符串为"",布尔值为false,指针为nil。

func namedRetValue () (a int, b int) 
    a = 1    // 在函数体内,可以直接对命名返回值变量进行赋值和值获取
    b = 2
    
    return   // 使用return语句,显式返回。可以不填写返回值列表,如果填写也行

func namedRetValue () (a int, b int) 
    a = 1
    
    return a, 2

上面两个代码块的执行效果一样。

package main

import (
    "fmt"
)

// 函数返回值是一个常量
func GetMoney() (_amount int)  // 函数指定返回值的参数名和类型
    _amount = 88
    fmt.Println("money: ", _amount)
    return _amount


func main()
  amount := GetMoney()
  fmt.Println("money: ", amount)


/*
money:  88
money:  88
*/
  • 函数返回值是一个整数
package main

import (
    "fmt"
)

func GetMoney(_amount int)
    fmt.Println("money: ", _amount)
    return 88


func main()
    amount := GetMoney(11)
    fmt.Println("money: ",amount)


/*
运行结果:
money:  0
money:  88
*/

实例:退出执行,指定返回值和指定默认值

package main
import (
    "fmt"
)

func GetMoney() (_amount int)
    _amount  = 99     // 如果return后面没有指定返回值,就用常量_amount赋给“返回值变量amount”的值
    fmt.Println("money: ",_amount)
    return 88         // 如果return后面跟有返回值,就使用return后面的返回值,赋给“返回值变量amount”


func main()
    var amount  = GetMoney()  
    fmt.Println("money: ",amount)


/*
运行结果:
money:  99
money:  88
*/
  • 函数作为返回值

  • 同一种类型返回值(我用)

使用return语句时,返回值的顺序需要与函数声明的返回值类型一致。

package func_test

import (
	"testing"
)

func div(a, b int) (c int, d int) 
	return a / b, a % b


func TestReturn(t *testing.T) 
	c, d := div(17, 3)
	t.Log(c, d)

注:如果返回值是同一种数据类型,则用括号包裹,用逗号分割每个返回值类型。如func div(a, b int) (int, int)。但是如果省略了返回值的参数名,在同类型的多返回值时,使用纯类型的代码可读性不好,无法区分每个返回值的含义。

如果我们只想使用其中一个返回值,如上文中的程序只获取商,应该通过占位符_来忽略掉不使用的变量。

package func_test

import (
	"testing"
)

func div(a, b int) (c int, d int) 
	return a / b, a % b


func TestReturn(t *testing.T) 
	q, _ := div(17, 3)
	t.Log(q)

  • 注意事项

同一种类型返回值和命名返回值只能二选一,如果混用,将会报错:mixed named and unnamed function parameters.

func namedRetValue () (a, b int, int)

go语言基础之函数(代码片段)

Go语言基础之函数Go语言中,函数的基本组成为:关键字func,函数名,参数列表,返回值和返回语句。函数定义定义函数的具体格式如下:func函数名(参数)(返回值)函数体其中:函数名:由字母、数字、下划线组成。但函数名的... 查看详情

go语言学习笔记—基础—函数:函数调用(代码片段)

在声明函数时,你定义了函数需要做什么(函数功能),通过调用该函数,让当前代码跳转到被调用的函数中来执行特定任务。函数调用具有以下特点:调用函数,向函数传递参数,并返回值函数... 查看详情

go语言基础:map|函数(代码片段)

文章目录mapmap的定义map使用判断某个键是否存在map的遍历使用delete函数删除键值对特定的顺序遍历map元素是map类型的切片元素类型是切片的map练习函数函数定义函数的调用参数类型的简写可变参数返回值多返回值返回值命名返回... 查看详情

go语言基础:map|函数(代码片段)

文章目录mapmap的定义map使用判断某个键是否存在map的遍历使用delete函数删除键值对特定的顺序遍历map元素是map类型的切片元素类型是切片的map练习函数函数定义函数的调用参数类型的简写可变参数返回值多返回值返回值命名返回... 查看详情

7.go语言基础之函数(代码片段)

1.函数1.1函数定义Go语言中定义函数使用fun关键字,具体格式为func函数名(参数)(返回值)函数体其中:1.函数名:由字母,数字,下划线组成。但函数名的第一个字母不能是数字。在同一个包内,函数名不能重名。2.参数:参数由... 查看详情

go+语言的多返回值函数(代码片段)

目录多返回值函数基础示例代码处理不需要的返回值示例代码命名返回参数示例代码return语句会覆盖命名返回参数的值                示例代码多返回值的重要作用:返回error示例代码多返回值函数基础        Go... 查看详情

go+语言的多返回值函数(代码片段)

目录多返回值函数基础示例代码处理不需要的返回值示例代码命名返回参数示例代码return语句会覆盖命名返回参数的值                示例代码多返回值的重要作用:返回error示例代码多返回值函数基础        Go... 查看详情

go语言学习笔记—基础—函数:可变参数(代码片段)

1.函数入参函数声明与函数调用时,可以不设置固定数量的参数。格式如下:func函数名(固定参数列表,v...T)(返回参数列表)函数体函数入参的前面是固定参数列表,末尾一般放置可变参数。当没有固定参数列表时,... 查看详情

go语音基础之函数

一、函数1、定义格式函数构成代码执行的逻辑结构。在Go语言中,函数的基本组成为:关键字func、函数名、参数列表、返回值、函数体和返回语句。Go语言函数定义格式如下:funcFuncName(/*参数列表*/)(o1type1,o2type2/*返回类型*/)//函... 查看详情

go语言学习-函数(代码片段)

函数声明函数声明包括函数名,形参列表,返回值列表(可选),函数体组成functest(parameters)(returns)//...其中parameters就是函数的形参列表,描述了函数的参数名和参数类型,可以没有参数但是这个括号不可以省略;returns就是返回值列... 查看详情

go语言学习笔记—基础—函数:函数变量(把函数作为变量的值)(代码片段)

函数变量,即把函数作为变量的值。在go语言中,函数也是一种类型,可以像其他类型一样保存在变量中。packagemainimport( "fmt")funcfire() fmt.Println("fire")funcmain() varffunc() f=fire f() 查看详情

go语言自学系列|golang函数的返回值(代码片段)

...续更新中...]》一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持!附上汇总贴:Go语言自学系列|汇总_COCOgsta的博客-CSDN博客函数可以有0或多个 查看详情

go基础笔记

1.slice:作为参数传递时,传递的是地址,当append时,在新的内存地址分配数据,但是没有返回给原的slice,只能通过返回值的方式赋值给slice2.func(a[]int):传递,可以3.匿名函数:函数内部的声明匿名函数4.闭包:初始化,使用闭包5.... 查看详情

go语言学习-函数(代码片段)

函数Go不是一门纯函数式的编程语言,但是函数在Go中是“第一公民”,表现在:函数是一种类型,函数类型变量可以像其他类型变量一样使用,可以作为其他函数的参数或返回值,也可以直接调用执行。函数支持多值返回。支... 查看详情

go语言基础函数,数组,指针,结构体(代码片段)

目录函数匿名函数函数闭包的简单使用以及获取键盘输入闭包加上函数多返回值为什么闭包不会被垃圾回收defer内置函数panic、recover语言变量作用域数组数组定义数组+函数+宏定义二维数组指针make和new的区别二级指针的使... 查看详情

go基础之函数方法接口包(代码片段)

Go基础(二)之函数、方法、接口、包一、函数1.1函数参数1.2返回值1.3匿名函数1.4延迟处理defer1.5错误处理1.6内置函数1.7常用的相关函数二、方法2.1方法简介2.2通过方法封装三、接口3.1接口简介3.2类型转换四、包的基本概... 查看详情

go语言学习笔记—基础—函数:闭包(closure)——引用了外部变量的匿名函数(代码片段)

闭包是引用了(函数外部)自由变量的函数。被引用的自由变量和函数一同存在,即使离开了自由变量所在的引用环境(例如在某个go源文件中导入某个package的闭包),我们仍可在闭包中继续使用这个自由... 查看详情

go语言函数(代码片段)

函数Go语言和C语言一样也有函数的概念,Go语言中函数除了定义格式和不用声明以外,其它方面几乎和C语言一模一样格式:func函数名称(形参列表)(返回值列表)函数体;无参数无返回值函数funcsay() fmt.Println("HelloWorld!!!")有参数无... 查看详情