// switch — 依值路由到對應分支 // //go:build tinygo package main import ( "encoding/json" "io" "os" ) type Case struct { Match string `json:"match"` Branch string `json:"branch"` } type Input struct { Value string `json:"value"` Cases []Case `json:"cases"` DefaultBranch string `json:"default_branch"` } func main() { raw, err := io.ReadAll(os.Stdin) if err != nil { writeError("failed to read stdin: " + err.Error()) return } var input Input if err := json.Unmarshal(raw, &input); err != nil { writeError("invalid input JSON: " + err.Error()) return } for _, c := range input.Cases { if c.Match == input.Value { writeSuccess(c.Branch) return } } branch := input.DefaultBranch if branch == "" { branch = "default" } writeSuccess(branch) } func writeSuccess(branch string) { out, _ := json.Marshal(map[string]interface{}{ "success": true, "data": map[string]interface{}{"branch": branch}, }) os.Stdout.Write(out) } func writeError(msg string) { out, _ := json.Marshal(map[string]interface{}{"success": false, "error": msg}) os.Stdout.Write(out) }