09-Go语言函数

2018-09-21  本文已影响0人  喝酸奶要舔盖__

函数

1.在C语言中函数定义在main函数后面,需要先声明再调用
在Go语言中可以不用声明直接使用
2.Go语言中如果函数只有一个返回值, 那么返回值列表的()可以省略
3.Go语言中如果有返回值,可以在返回值列表中定义变量,函数中可以直接使用
4.如果在返回值列表中定义了变量, 那么return后面可以不用写任何内容, 默认就会将返回值列表中定义的变量返回
5.Go语言中一个函数可以有多个返回值
6.如果一个函数有多个返回值, 但是我们只想使用其中的一个, 那么可以在接收的时候使用_来忽略, 不需要的那个返回值
7.因为_(下划线)在Go语言中有特殊的含义, 所以在定义标识符的时候_(下划线)不能单独作为标识符
8.如果返回值列表中有多个返回值, 并且连续的多个返回值的数据类型都一样, 那么只用在最后一个变量后面添加数据类型即可
9.如果形参列表中有多个形参, 并且连续的多个形参的数据类型都一样, 那么只用在最后一个变量后面添加数据类型即可


值传递和引用传递


匿名函数

3.1匿名函数定义之后, 如果没有立即调用, 编译器会报错
3.2也可以将一个匿名函数保存到一个变量中
在C语言中我们知道, 我们可以定义一个指向函数的指针来保存函数的地址, 然后通过指针来调用函数
在Go语言中函数是一等公民(可以定义变量, 作为形参, 作为返回值), 所以在Go语言中也可以用函数类型来定义变量(相当于C语言中指向函数的指针)
3.3由于函数是一等公民, 所以以前定义变量所有的格式, 都可以用于定义函数类型的变量
var 变量名称 函数类型
var 变量名称 函数类型 = 匿名函数
var 变量名称 = 匿名函数
变量名称 := 匿名函数
var(
变量名称 = 匿名函数
)

//定义一个匿名函数,立即调用自己,直接在匿名函数后面加上()
    func(){
        fmt.Printf("我是一个匿名函数,然后立即调用")
    }()
//这种方法可以查看匿名函数是什么类型的函数
    f := func() {
        fmt.Println("我是一个匿名函数")
    }
    fmt.Printf("%T\n", f)
// 定义一个函数类型的变量, 保存匿名函数

    var f func() = func() {
        fmt.Println("我是一个匿名函数")
    }
    //然后通过函数类型的变量调用匿名函数
    f()

闭包


延迟调用


init函数

上一篇下一篇

猜你喜欢

热点阅读