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