场景 1:调用同一 main 包内其他文件的成员
如果其他文件也声明为 package main(同属一个可执行程序),可以直接访问其中的成员(无论是否大写,但建议大写规范)
目录结构:
myproject/
├── main.go
└── helper.go # 同属 main 包
// helper.go
package main // 与 main.go 同属 main 包
// 变量(首字母大写,规范写法)
var AppName = "MyApp"
// 函数(首字母大写)
func Add(a, b int) int {
return a + b
}
// main.go
package main
import "fmt"
func main() {
// 直接调用同一包内 helper.go 中的变量和函数
fmt.Println(AppName) // 输出:MyApp
fmt.Println(Add(2, 3)) // 输出:5
}
编译运行
go run main.go helper.go # 需指定所有文件,或用 go run .(推荐)
场景 2:调用其他包中的成员
目录结构:myproject/
├── go.mod # 模块初始化:go mod init example.com/myproj
├── main.go # main 包
└── utils/ # 自定义 utils 包
└── tool.go
模块初始化
go mod init example.com/myproj
// utils/tool.go
package utils // 属于 utils 包
// 导出变量(首字母大写)
var MaxSize int = 1024
// 导出函数(首字母大写)
func Multiply(x, y int) int {
return x * y
}
// main.go
package main
import (
"fmt"
"example.com/myproj/utils" // 导入 utils 包(模块名+包路径)
)
func main() {
// 通过「包名.成员名」调用
fmt.Println(utils.MaxSize) // 输出:1024
fmt.Println(utils.Multiply(3, 4)) // 输出:12
}
编译运行
go run main.go # 模块内自动识别依赖
posted on
浙公网安备 33010602011771号