100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > go语言函数相关

go语言函数相关

时间:2019-08-29 01:42:22

相关推荐

go语言函数相关

函数类型

函数类型也叫作函数签名, 就是函数定义首行去掉函数名、参数名和{,可以使用fmt.Printf 的”%T”格式化参数打印函数的类型。

可以使用 type 定义函数类型,函数类型变量可以作为函数的参数或返回值。

实际函数类型变量和函数名都可以当作指针变量,该指针指向函数代码 开始位置

func add(a int, b int) int {return a + b}func sub(a int, b int) int {return a - b}type Op func(int, int) int; // 定义一个函数类型,type FuncTypeVar struct {f Op}func do(f Op, a int, b int) int {return f(a, b)}func main() {a := do(add, 2, 3) //函数名 add 可以当作相同函数类型形参,不需强制类型转换fmt.Println(a)b := do(sub, 3, 2)fmt.Println(b)temp := &FuncTypeVar{}fmt.Println(temp.f) // <nil>}

匿名函数

匿名函数可以看做函数字面量,所有直接使用函数类型变量的地方都可以由匿名函数代替。匿名函数可以直接赋值给函数变量,可以当做实参,也可以作为返回值,也可以直接被调用

package mainimport "fmt"//匿名函数被直接赋值函数变量var sum = func(a int, b int) int {return a + b}func doinput(f func(int, int) int, a int, b int) int {//func(int, int) int 为函数类型return f(a, b)}// 匿名函数作为返回值func wrap(op string) func (int, int) int {switch op {case "add":return func(a int, b int) int {return a + b}case "sub":return func(a int, b int) int {return a - b}default :return nil}}func main() {// 匿名函数直接执行defer func() {fmt.Println("this is anonymity function")}()sum(1, 2)// 匿名函数作为实参doinput(func(x int, y int) int{return x + y}, 1, 2)opFunc := wrap("add")re := opFunc(2, 3)fmt.Println(re)}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。