AzLearn

تمرين إعادة البناء

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)
	}
}
اكتب هنا