greet/greet.go

43 lines
644 B
Go
Raw Normal View History

2021-08-29 15:36:09 +01:00
package main
import (
"fmt"
"io"
"log"
"os"
2021-08-29 15:36:09 +01:00
)
type numberOfArgumentError struct {
length int
}
func (e numberOfArgumentError) Error() string {
return fmt.Sprintf("unexpected number of arguments passed to the greeter: want 0 or 1 argument, got %d", e.length)
}
2021-08-29 15:36:09 +01:00
func main() {
osArgs := os.Args[1:]
if err := greet(os.Stdout, osArgs); err != nil {
log.Fatalf("ERROR: %s.\n", err)
2021-08-29 15:36:09 +01:00
}
}
func greet(w io.Writer, n []string) error {
var name string
if len(n) > 1 {
return numberOfArgumentError{length: len(n)}
}
if len(n) == 0 {
2021-08-29 15:36:09 +01:00
name = "World"
} else {
name = n[0]
}
fmt.Fprintf(w, "Hello, %s!\n", name)
return nil
}