Package Variables
- Exported identifiers start with an upper-case letter
- files in the same package can be in the same folder
- Package level variables can't be duplicated, even they are in different files
// file:declaration/variables2.go
package declaration
import ()
var localVarInVariables = "localVarInVariables2"
var PackageVarInVariables = "PackageVarInVariables2"
// file:declaration/variables3.go
package declaration
import (
"fmt"
)
func AccessDifferentFileVaraible() string {
return fmt.Sprintf("%s\n%s\n", PackageVarInVariables, localVarInVariables)
}
// file:main/main.go
package main
import (
"declaration"
"fmt"
)
func main() {
fmt.Printf("%s", declaration.AccessDifferentFileVaraible())
fmt.Printf("%s", declaration.PackageVarInVariables)
// fmt.Printf("%s", declaration.localVarInVariables) // panic
}
Package functions
// main/main.go
package main
import (
"declaration"
"fmt"
)
func main() {
fmt.Printf("PackageFunc:%s\n", declaration.PackageFunc()) // func1.go
fmt.Printf("PackageShowFunc:%s\n", declaration.PackageShowFunc()) // func2.go
fmt.Printf("PackageShowFunc:%s\n", declaration.NamedType("NamedTyped.PackageToString").PackageToString()) // func1.go
// fmt.Printf("PackageShowFunc:%s\n", declaration.NamedType("NamedTyped.PackageToString").localToString()) // func1.go, panic
}
// declaration/func1.go
package declaration
import (
"fmt"
)
type NamedType string
func (n NamedType) PackageToString() string {
return fmt.Sprintf("PackageToString:%s", n)
}
func (n NamedType) localToString() string {
return fmt.Sprintf("localToString:%s", n)
}
func PackageFunc() string {
return "PackageFunc"
}
func localFunc() string {
return "localFunc"
}
// declaration/func2.go
package declaration
import (
"fmt"
)
func PackageShowFunc() string {
return fmt.Sprintf("PackageFunc:%s, LocalFunc:%s", PackageFunc(), localFunc())
}
沒有留言:
張貼留言