Skip to content

【10】在Go中,函数也是一种数据类型,可以赋值给一个变量,则该变量就是一个函数类型的变量了。通过该变量可以对函数调用。

go
package main
import "fmt"

//定义一个函数:
func test(num int){
        fmt.Println(num)
}

func main(){
        //函数也是一种数据类型,可以赋值给一个变量
        a := test//变量就是一个函数类型的变量
        fmt.Printf("a的类型是:%T,test函数的类型是:%T \n",a,test)//a的类型是:func(int),test函数的类型是:func(int)

        //通过该变量可以对函数调用
        a(10) //等价于  test(10)
}

【11】函数既然是一种数据类型,因此在Go中,函数可以作为形参,并且调用 (把函数本身当做一种数据类型)

go
package main
import "fmt"

//定义一个函数:
func test(num int){
        fmt.Println(num)
}

//定义一个函数,把另一个函数作为形参:
func test02 (num1 int ,num2 float32, testFunc func(int)){
        fmt.Println("-----test02")
}

func main(){
        //函数也是一种数据类型,可以赋值给一个变量
        a := test//变量就是一个函数类型的变量
        fmt.Printf("a的类型是:%T,test函数的类型是:%T \n",a,test)//a的类型是:func(int),test函数的类型是:func(int)

        //通过该变量可以对函数调用
        a(10) //等价于  test(10)

        //调用test02函数:
        test02(10,3.19,test)
        test02(10,3.19,a)
}

【12】为了简化数据类型定义,Go支持自定义数据类型 基本语法: type 自定义数据类型名 数据类型 可以理解为 : 相当于起了一个别名 例如:type mylnt int -----》这时mylnt就等价int来使用了.

例如:type mySum func (int , int) int -----》这时mySum就等价一个函数类型func(int, int) int

【13】支持对函数返回值命名 传统写法要求:返回值和返回值的类型对应,顺序不能差

升级写法:对函数返回值命名,里面顺序就无所谓了,顺序不用对应

Java · Golang · Rust