تمرين إعادة البناء
Command Router
أعد كتابة برنامج Go يوجه أوامر CLI صغيرة.
go
~22 دقيقة
متوسط
أعد بناء الكود
Rebuild
هذا هو الكود. اكتبه بنفسك.
الكود المرجعي
package main
import (
"fmt"
"os"
"strings"
)
type CommandFunc func([]string) error
func upper(args []string) error {
fmt.Println(strings.ToUpper(strings.Join(args, " ")))
return nil
}
func repeat(args []string) error {
if len(args) == 0 {
return fmt.Errorf("repeat needs text")
}
for i := 0; i < 3; i++ {
fmt.Println(strings.Join(args, " "))
}
return nil
}
func run(args []string) error {
commands := map[string]CommandFunc{
"upper": upper,
"repeat": repeat,
}
if len(args) == 0 {
args = []string{"upper", "go routes small commands"}
}
command, ok := commands[args[0]]
if !ok {
return fmt.Errorf("unknown command %q", args[0])
}
return command(args[1:])
}
func main() {
if err := run(os.Args[1:]); err != nil {
fmt.Println("error:", err)
os.Exit(1)
}
}اكتب هنا