Go中函数变量的特点
-
在Go语言中,函数也是一种类型,可以和其他类型一样保存在变量中
示例代码:
定义了一个函数变量 f,并将一个函数名为 fire() 的函数赋给函数变量 f,这样调用函数变量 f 时,实际调用的就是 fire() 函数
package main
?
import "fmt"
?
func printValue() {
fmt.Println("Hello")
}
?
func main() {
var f func()
?
f = printValue
f()
}
代码分析:
-
func printValue() {
fmt.Println("Hello")
}-
定义了一个
printValue()
函数
-
-
var f func()
-
将变量
f
声明为func()
类型,此时f
称为“回调函数”,此时 f 的值为 nil。
-
-
f = printValue
-
将
printValue()
函数作为值,赋给函数变量f
,此时f
的值为printValue()
函数。
-
-
调用
f()
实际是调用printValue()
Go中函数返回值
Go中函数返回值的特点:
-
支持多返回值,多返回值能方便地获得函数执行后的多个返回参数
-
多返回值中的最后一个返回参数返回函数执行中可能发生的错误
示例代码:
conn, err := connectToNetwork()
/*
connectToNetwork 返回两个参数,conn 表示连接对象,err 返回错误信息
*/
同一种类型的返回值
返回值是同一种类型,则用括号将多个返回值类型括起来,用逗号分隔每个返回值的类型
package main
?
import "fmt"
?
func comeBack() (int, int) {
return 1,2
}
?
func main() {
fmt.Println(comeBack())
}
带有变量名的返回值
package main
?
import "fmt"
?
func comeBack() (a,b int) {
return 1,2
}
?
func main() {
fmt.Println(comeBack())
}
调用函数
因为函数变量的存在所以调用函数变得尤为重要
特点:
-
函数在定义后,可以通过调用的方式,调用前的函数局部变量都会被保存起来不会丢失
-
被调用的函数运行结束后,恢复到调用函数的下一行继续执行代码,之前的局部变量也能继续访问。
-