Every runnable Go program starts in package main with a main function.

package main `package main` tells Go to build an executable program instead of a reusable library package.

Package Main

appName
package_main.go
Replay: real traced execution (multi-file project)
package main

import "fmt"

func main() {
	var appName = "GoApp"
	packageName := "main"
	entryPoint := "main"

	fmt.Println("package=", packageName)
	fmt.Println("entry=", entryPoint)
	fmt.Println("app=", appName)
}
package main

import "fmt"

func main() {
	var appName = "Toolbox"
	packageName := "main"
	entryPoint := "main"

	fmt.Println("package=", packageName)
	fmt.Println("entry=", entryPoint)
	fmt.Println("app=", appName)
}
package main

import "fmt"

func main() {
	var appName = "Runner"
	packageName := "main"
	entryPoint := "main"

	fmt.Println("package=", packageName)
	fmt.Println("entry=", entryPoint)
	fmt.Println("app=", appName)
}
  1. appName ← "GoApp", packageName ← "main", entryPoint ← "main"

    5func main() {6  var appName→ "GoApp" = "GoApp" //@appName="Toolbox", "Runner"7  packageName→ "main" := "main"8  entryPoint→ "main" := "main"910  fmt.Println("package=", packageName"main")11  fmt.Println("entry=", entryPoint"main")12  fmt.Println("app=", appName"GoApp")13}
    outputpackage= main
    entry= main
    app= GoApp
  1. appName ← "Toolbox", packageName ← "main", entryPoint ← "main"

    5func main() {6  var appName→ "Toolbox" = "Toolbox"7  packageName→ "main" := "main"8  entryPoint→ "main" := "main"910  fmt.Println("package=", packageName"main")11  fmt.Println("entry=", entryPoint"main")12  fmt.Println("app=", appName"Toolbox")13}
    outputpackage= main
    entry= main
    app= Toolbox
  1. appName ← "Runner", packageName ← "main", entryPoint ← "main"

    5func main() {6  var appName→ "Runner" = "Runner"7  packageName→ "main" := "main"8  entryPoint→ "main" := "main"910  fmt.Println("package=", packageName"main")11  fmt.Println("entry=", entryPoint"main")12  fmt.Println("app=", appName"Runner")13}
    outputpackage= main
    entry= main
    app= Runner