- Go 没有显式的
private
、public
关键字,通过首字母大小写进行访问控制标识。 - 在 Go 中,名称首字母大写表示这个名称(变量、函数、结构体等)是 导出的,可以在包外部被访问和使用。
1. 导出函数
package example
func SetupKeyValueStore() {}
func setupHelper() {}
2. 导出结构体
package example
type Config struct {
Port int
Username string
password string
}
3. 导出接口
type Database interface {
Connect() error
disconnect() error
}
4. 导出常量
package example
const DefaultTimeout = 30
const defaultRate = 100
5. 导出变量
package example
var Version = "1.0.0"
var configPath = "/etc/config"
6. 导出包初始化函数
- Go 规范上没有规定导出的初始化函数,但惯例上有时会使用特定的大写函数名来创建包的实例或配置,例如
New
、Open
、Init
,这些函数通常返回一个导出的实例(比如结构体、接口实现等)。
package example
import "fmt"
type Config struct {
Host string
Port int
}
func New(host string, port int) *Config {
return &Config{
Host: host,
Port: port,
}
}
func (c *Config) Print() {
fmt.Printf("Host: %s, Port: %d\n", c.Host, c.Port)
}
package main
import (
"example"
)
func main() {
config := example.New("localhost", 8080)
config.Print()
}