Go语言基础–函数–匿名函数 – 21运维
通知: .-...

Go语言基础–函数–匿名函数

GO 21运维 939浏览

匿名函数:没有函数名,其他和普通函数一样。实际编程中,函数变量也是得到了很大的应用。
匿名函数在使用函数的时候才再定义函数,匿名函数可以作为一种类型被赋值给函数变量,往往以变量形式进行传递。
go只是随时在代码里定义匿名函数。

匿名函数的使用
1,将匿名函数赋值给函数变量。

案例:
package main

import (
   "fmt"
)
func main(){
   f := func (test int){
      fmt.Println("data:",test)
   }
   f(1000)
}

输出:
data 123

2,将匿名函数用作回调函数

资料案例:

package main
import (
   "fmt"
)
// 定义一个普通函数,遍历切片的每个元素, 通过给定函数进行元素输出
func visit(list []int, f func(int)) {
   for _, v := range list {
      f(v)  //实际是通过调用普通函数,将匿名函数赋值给了一个函数变量f。
   }
}
func main() {
   // 使用匿名函数打印切片内容,这里visit的第二个参数实际就是一个定义完整的匿名函数。
   visit([]int{1, 2, 3, 4}, func(v int) {
      fmt.Println(v)
   })
}

输出结果:
1
2
3
4

2,使用匿名函数实现操作封装

package main
import (
   "flag"
   "fmt"
)
var skillParam = flag.String("skill", "", "skill to perform")
func main() {
   flag.Parse()
   var skill = map[string]func(){
      "fire": func() {
         fmt.Println("chicken fire")
      },
      "run": func() {
         fmt.Println("soldier run")
      },
      "fly": func() {
         fmt.Println("angel fly")
      },
   }
   if f, ok := skill[*skillParam]; ok {
      f()
   } else {
      fmt.Println("skill not found")
   }
}

采用教材的案例,实际这里的匿名函数,结果为map元素对应的键值value。

3,函数类型实现接口–把函数作为接口来调用。
后边补充。

转载请注明:21运维 » Go语言基础–函数–匿名函数