An import alias gives a package a local name inside one file.

import alias Aliases are useful when a package name would be unclear or conflict with another identifier. This single-file example keeps the alias form as text so the replay stays traceable.

Import Aliases

aliasName
import_aliases.go
Replay: real traced execution (multi-file project)
package main

import (
	"fmt"
	"strings"
)

func main() {
	var aliasName = "text"
	packageName := "strings"
	aliasLine := aliasName + " " + packageName
	word := "module"
	upper := strings.ToUpper(word)

	fmt.Println("alias=", aliasName)
	fmt.Println("package=", packageName)
	fmt.Println("line=", aliasLine)
	fmt.Println("upper=", upper)
}
package main

import (
	"fmt"
	"strings"
)

func main() {
	var aliasName = "out"
	packageName := "strings"
	aliasLine := aliasName + " " + packageName
	word := "module"
	upper := strings.ToUpper(word)

	fmt.Println("alias=", aliasName)
	fmt.Println("package=", packageName)
	fmt.Println("line=", aliasLine)
	fmt.Println("upper=", upper)
}
package main

import (
	"fmt"
	"strings"
)

func main() {
	var aliasName = "path"
	packageName := "strings"
	aliasLine := aliasName + " " + packageName
	word := "module"
	upper := strings.ToUpper(word)

	fmt.Println("alias=", aliasName)
	fmt.Println("package=", packageName)
	fmt.Println("line=", aliasLine)
	fmt.Println("upper=", upper)
}
  1. aliasName ← "text", packageName ← "strings", aliasLine ← "text strings"

    8func main() {9  var aliasName→ "text" = "text" //@aliasName="out", "path"10  packageName→ "strings" := "strings"11  aliasLine→ "text strings" := aliasName"text" + " " + packageName"strings"12  word→ "module" := "module"13  upper→ "MODULE" := strings.ToUpper(word"module")1415  fmt.Println("alias=", aliasName"text")16  fmt.Println("package=", packageName"strings")17  fmt.Println("line=", aliasLine"text strings")18  fmt.Println("upper=", upper"MODULE")19}
    outputalias= text
    package= strings
    line= text strings
    upper= MODULE
  1. aliasName ← "out", packageName ← "strings", aliasLine ← "out strings"

    8func main() {9  var aliasName→ "out" = "out"10  packageName→ "strings" := "strings"11  aliasLine→ "out strings" := aliasName"out" + " " + packageName"strings"12  word→ "module" := "module"13  upper→ "MODULE" := strings.ToUpper(word"module")1415  fmt.Println("alias=", aliasName"out")16  fmt.Println("package=", packageName"strings")17  fmt.Println("line=", aliasLine"out strings")18  fmt.Println("upper=", upper"MODULE")19}
    outputalias= out
    package= strings
    line= out strings
    upper= MODULE
  1. aliasName ← "path", packageName ← "strings", aliasLine ← "path strings"

    8func main() {9  var aliasName→ "path" = "path"10  packageName→ "strings" := "strings"11  aliasLine→ "path strings" := aliasName"path" + " " + packageName"strings"12  word→ "module" := "module"13  upper→ "MODULE" := strings.ToUpper(word"module")1415  fmt.Println("alias=", aliasName"path")16  fmt.Println("package=", packageName"strings")17  fmt.Println("line=", aliasLine"path strings")18  fmt.Println("upper=", upper"MODULE")19}
    outputalias= path
    package= strings
    line= path strings
    upper= MODULE

Follow the Name

  1. aliasName starts as text.
  2. packageName is strings.
  3. aliasLine joins them as text strings.
  4. strings.ToUpper("module") makes MODULE.
  5. The program prints the alias, package, line, and uppercase word. | aliasName | packageName | aliasLine | upper | | --- | --- | --- | --- | | text | strings | text strings | MODULE | | out | strings | out strings | MODULE | | path | strings | path strings | MODULE |

Exercise: import_aliases.go

Reproduce alias= text, package= strings, line= text strings, and upper= MODULE, then use aliases out and path to predict the changed line output.