Start with a tiny Go program that stores a value and prints a greeting.

package main A runnable Go program starts in `package main` and has a `main` function.

Hello Go

name
hello.go
Replay: real traced execution (multi-file project)
package main

import "fmt"

func main() {
	var name = "Go"
	message := "Hello, " + name + "!"

	fmt.Println(message)
}
package main

import "fmt"

func main() {
	var name = "Ada"
	message := "Hello, " + name + "!"

	fmt.Println(message)
}
package main

import "fmt"

func main() {
	var name = "Gopher"
	message := "Hello, " + name + "!"

	fmt.Println(message)
}
  1. name ← "Go", message ← "Hello, Go!"

    5func main() {6  var name→ "Go" = "Go" //@name="Ada", "Gopher"7  message→ "Hello, Go!" := "Hello, " + name"Go" + "!"89  fmt.Println(message"Hello, Go!")10}
    outputHello, Go!
  1. name ← "Ada", message ← "Hello, Ada!"

    5func main() {6  var name→ "Ada" = "Ada"7  message→ "Hello, Ada!" := "Hello, " + name"Ada" + "!"89  fmt.Println(message"Hello, Ada!")10}
    outputHello, Ada!
  1. name ← "Gopher", message ← "Hello, Gopher!"

    5func main() {6  var name→ "Gopher" = "Gopher"7  message→ "Hello, Gopher!" := "Hello, " + name"Gopher" + "!"89  fmt.Println(message"Hello, Gopher!")10}
    outputHello, Gopher!

Follow the Greeting

  1. name starts as "Go".
  2. The program joins "Hello, ", name, and "!".
  3. message becomes Hello, Go!.
  4. fmt.Println(message) prints Hello, Go!. | name | message | | --- | --- | | Go | Hello, Go! | | Ada | Hello, Ada! | | Gopher | Hello, Gopher! |

Exercise: hello.go

Reproduce Hello, Go!, then try Ada and Gopher and predict each greeting before running it.