Packages and Modules
Import Aliases
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
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)
}
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
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
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
aliasNamestarts astext.packageNameisstrings.aliasLinejoins them astext strings.strings.ToUpper("module")makesMODULE.- 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.