// Provides a Hello world example with tests package main import ( "fmt" ) // Constants can be grouped in a block. // Add a line between related consts for // readbility const ( french = "French" spanish = "Spanish" englishHelloPrefix = "Hello, " spanishHelloPrefix = "Hola, " frenchHelloPrefix = "Bonjour, " ) // Hello prints the string "Hello, world" func Hello(name string, language string) string { if name == "" { name = "World" } return greetingPrefix(language) + name } // greetingPrefix Using a named return value will initialize a "zero value" // variable which as you can see below can be assigned to. // this will display in Go Doc for your function. // Lower case letter functions are "private" functions. They are internal to implementation. func greetingPrefix(language string) (prefix string) { switch language { case french: prefix = frenchHelloPrefix case spanish: prefix = spanishHelloPrefix default: prefix = englishHelloPrefix } // we use names return value in function signature return } func main() { fmt.Println(Hello("world", "")) }