上海网站建设的企业,xampp 搭建 wordpress,h5网站开发工具,网站建筑设计函数类型
函数类型也叫作函数签名#xff0c; 就是函数定义首行去掉函数名、参数名和#xff5b;#xff0c;可以使用fmt.Printf 的”%T”格式化参数打印函数的类型。 可以使用 type 定义函数类型#xff0c;函数类型变量可以作为函数的参数或返回值。 实际函数类型变量和…函数类型
函数类型也叫作函数签名 就是函数定义首行去掉函数名、参数名和可以使用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)
}