9.1Go之函数变量和返回值

9.1Go之函数变量和返回值

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())
}

调用函数

因为函数变量的存在所以调用函数变得尤为重要

特点:

  • 函数在定义后,可以通过调用的方式,调用前的函数局部变量都会被保存起来不会丢失

  • 被调用的函数运行结束后,恢复到调用函数的下一行继续执行代码,之前的局部变量也能继续访问。

  • 函数内的局部变量只能在函数体中使用,函数调用结束后,这些局部变量都会被释放并且失效。

9.1Go之函数变量和返回值

上一篇:一些毛病


下一篇:IntelliJ IDEA报Could not autowire. No beans of 'xxxx' type found提示的解决方法