【GO学习笔记 go基础】访问控制

  • Go 没有显式的 private、public 关键字,通过首字母大小写进行访问控制标识。
  • 在 Go 中,名称首字母大写表示这个名称(变量、函数、结构体等)是 导出的,可以在包外部被访问和使用。

1. 导出函数

go 复制代码
     package example
     
     func SetupKeyValueStore() {}// 导出函数,包外部可见
     func setupHelper() {}// 未导出函数,仅包内部可见

2. 导出结构体

go 复制代码
    package example

    type Config struct { // 导出结构体
        Port     int    // 导出字段
        Username string // 导出字段
        password string // 未导出字段
    }

3. 导出接口

go 复制代码
     type Database interface { // 导出接口
         Connect() error       // 导出方法
         disconnect() error    // 未导出方法
     }

4. 导出常量

go 复制代码
     package example

     const DefaultTimeout = 30 // 导出常量
     const defaultRate = 100   // 未导出常量

5. 导出变量

go 复制代码
     package example

     var Version = "1.0.0" // 导出变量
     var configPath = "/etc/config" // 未导出变量

6. 导出包初始化函数

  • Go 规范上没有规定导出的初始化函数,但惯例上有时会使用特定的大写函数名来创建包的实例或配置,例如 New、Open、Init,这些函数通常返回一个导出的实例(比如结构体、接口实现等)。
go 复制代码
// example.go
package example

import "fmt"

// 定义一个结构体
type Config struct {
    Host string
    Port int
}

// 使用 New 函数来创建 Config 的实例
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)
}
  • 使example包:
go 复制代码
// main.go
package main

import (
    "example"
)

func main() {
    // 使用 New 函数创建 Config 实例
    config := example.New("localhost", 8080)
    // 调用 Print 方法
    config.Print()
}
相关推荐
ZZHow102424 分钟前
Ascend C算子开发(高级)笔记
c++·人工智能·笔记·深度学习·华为云
PC2005-cloud1 小时前
Mysql学习笔记:InnoDB Cluster 集群从零搭建实战,基于 Docker 实现高可用读写分离架构
笔记·学习·mysql
小陈phd1 小时前
深入理解agent学习笔记(七)——动态提示词与Skills
笔记·学习
我命由我123451 小时前
田野笔记极简理解
经验分享·笔记·学习·职场和发展·求职招聘·职场发展·学习方法
一木 之林2 小时前
微信小程序开发全攻略·文章版|00 总览:74集学习路径与知识地图
人工智能·学习·计算机视觉·微信小程序·小程序
小陈phd2 小时前
深入理解agent学习笔记(六)——提示工程-优化系统提示词
笔记·学习
霖霖7142 小时前
【ESP32笔记】RGB灯WS2812实验
笔记·单片机·mcu·物联网
Aurora_eye2 小时前
Git 笔记
笔记·git
yi0112 小时前
DAY28: LeetCode 111. 二叉树的最小深度
人工智能·笔记·python·算法·leetcode·二叉树·递归
倔强的小石头_3 小时前
从Go+SQLite编译到浏览器开局:landlord部署、AI对局与固定地址实战
人工智能·golang·sqlite