/**
 * 使用匿名函数实现操作封装
 * 将匿名函数作为 map 的键值,通过命令行参数动态调用匿名函数
 * 运行命令 go run src/hh/main.go --skill=fly
 */
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")
   }

}