What makes you think that the line which calls os.Exit(1) is being reached?
What are your test arguments to the program? On Monday 23 September 2024 at 14:42:31 UTC+1 Maisa Unbelievable wrote: > Hello there! I don't quiet understand why *os.Exit* doesn't terminate my > program according to its documentation: > > Exit causes the current program to *exit with the given status code*. > > My program implements a rudimentary CLI parsing: > > package main > > import ( > "fmt" > "os" > ) > > func main() { > var name string > var age string > > args := os.Args[1:] > i := 0 > > for i+1 < len(args) { > option := args[i] > value := args[i+1] > > switch option { > case "--name": > name = value > case "--age": > age = value > default: > fmt.Printf("Unknown option %s", option) > os.Exit(1) // <-- I expected this function to terminate the program > } > > i += 2 > } > > fmt.Printf("name == %s, age == %s", name, age) > } > > Basically, I wanna rewrite this Fish program to Go: > > #!/usr/bin/env fish > > set --local name > set --local age > > set --local i 1 > > while set --query argv[$i] > set --local option "$argv[$i]" > set --local value "$argv[$(math $i + 1)]" > > switch "$option" > case --name > set name $value > case --age > set age $value > case '*' > printf "Unknown option %s" $option > return 1 # I expected os.Exit to be a "return {{code}}" shell > equivalent > end > > set i (math $i + 2) > end > > printf "name == %s, age == %s" $name $age > > For the context: I'm new to go but have shell scripting experience. > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/39a1c22e-54db-4dbb-a1a8-59a64fe769cbn%40googlegroups.com.