1.2.1 包(package) 第1个文件:bye.go package main import "fmt" func bye() { fmt.Println("Bye!") } 第2个文件:hey.go package main import "fmt" func hey() { fmt.Println("Hey!") } 第3个文件:main.go package main import "fmt" func main() { fmt.Println("Hello!") bye() hey() } 可以从同一包中的其他文件访问函数,执行命令go gun main.go bye.go hey.go 或go run . 1.2.2 作用域块作用域(block-scope) 代码:package main func node() { // 开始 const ok = true var hello = "Hello" _= hello } // 结束 func main () { // 开始 // hello 和 ok 在这里不可用 // 报错: // fmt.Println(hello, ok) } // 结束嵌套作用域(nested-scope)package main var declareMeAgain = 10 func nested() { // 声明同一个变量,它们可以一起存在这个只属于这个范围包的变量 var declareMeAgain = 5 fmt.Println("inside nested:", declareMeAgain) } func main() { // block scope starts fmt.Println("inside main:", declareMeAgain) // 输出10 nested() // 输出5 // 包级声明再次不受嵌套 func 内部更改的影响 fmt.Println("inside main:", declareMeAgain) // 输出10 } // block scope ends包作用域(package-scope) 文件1:bye.go package main import "fmt" func bye() { fmt.Println("Bye!") } 文件2:main.go package main import "fmt" func main() { fmt.Println("Hello!") // 两个文件属于同一个包 bye() } 注意:不能在同一个包内重复声明同一个函数