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 ( )
}