当前位置: 首页 > article >正文

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

  • Go 没有显式的 privatepublic 关键字,通过首字母大小写进行访问控制标识。
  • 在 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 规范上没有规定导出的初始化函数,但惯例上有时会使用特定的大写函数名来创建包的实例或配置,例如 NewOpenInit,这些函数通常返回一个导出的实例(比如结构体、接口实现等)。
// 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包:
// main.go
package main

import (
    "example"
)

func main() {
    // 使用 New 函数创建 Config 实例
    config := example.New("localhost", 8080)
    // 调用 Print 方法
    config.Print()
}

http://www.kler.cn/a/373895.html

相关文章:

  • Python学习的自我理解和想法(22)
  • springboot配置prometheus
  • Linux中Samba服务配置和管理
  • Javaweb 实验4 xml
  • 基于web的便捷饭店点餐小程序的设计与实现(lw+演示+源码+运行)
  • 开源生活-分布式管理
  • 我谈Canny算子
  • leetcode双指针题目总结
  • SAP B1 功能模块字段介绍 - 价格清单(上)
  • Flutter动画渐变
  • Java面试经典 150 题.P169. 多数元素(005)
  • java.sql.SQLException: ORA-00971: 缺失 SET 关键字
  • 瑞格智慧心理服务平台 NPreenSMSList.asmx sql注入漏洞复现
  • Python 从入门到实战43(Pandas数据结构)
  • Ika赋予Sui开发者与其他链交互的能力
  • Java | Leetcode Java题解之第517题超级洗衣机
  • 如何实现易快报合同付款申请单对接金蝶云星空
  • python 模块和包、类和对象
  • 【JSON改】同结构JSON的批量修改工具
  • 高并发设计模式之ForkJoin模式
  • ssm010基于ssm的新能源汽车在线租赁管理系统(论文+源码)_kaic
  • Vue学习笔记(十二)
  • 【AAOS】【源码分析】CarSystemUI
  • 分库分表常见面试问题
  • 进一步认识ICMP协议
  • PAT甲级-1074 Reversing Linked List