package main import( "fmt" "os" "utf8tmpl/tmpl" "utf8tmpl/pin" ) func main() { var( utilName string args []string ) utilsMap := map[string] interface{} { "tmpl" : tmpl.Run, "pin" : pin.Run, } if len(os.Args)<2 { for k, _ := range utilsMap { fmt.Printf("%s\n", k) } os.Exit(0) } else { utilName = os.Args[1] args = os.Args[1:] } if _, ok := utilsMap[utilName] ; !ok { fmt.Printf("%s: %s: no such util\n", os.Args[0], utilName ) os.Exit(1) } status := utilsMap[utilName].(func([]string) int )(args) os.Exit(status) }