场景 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 2025-07-29 15:40  boye169  阅读(40)  评论(0)    收藏  举报