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())
}
调用函数
因为函数变量的存在所以调用函数变得尤为重要
特点:
- 
函数在定义后,可以通过调用的方式,调用前的函数局部变量都会被保存起来不会丢失 
- 
被调用的函数运行结束后,恢复到调用函数的下一行继续执行代码,之前的局部变量也能继续访问。 
- 
    It's a lonely road!!!
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号