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

Golang 开发实战day09 - package Scope

🏆个人专栏
🤺 leetcode
🧗 Leetcode Prime
🏇 Golang20天教程
🚴‍♂️ Java问题收集园地
🌴 成长感悟
欢迎大家观看,不执着于追求顶峰,只享受探索过程

Golang 教程09 - package Scope

1. package Scope

1.1 如何理解package Scope?

在Go语言的世界里,包就像一个大家庭,每个包都有自己的“家长”——包作用域。 包作用域规定了哪些成员可以在家庭里自由活动,哪些成员只能待在自己的房间里。

想象一下,包就像一个热闹的菜市场:

  • 每个摊位就是一个包,里面摆满了各种各样的商品,也就是变量、函数、类型等成员。
    顾客可以自由地在菜市场里逛,挑选自己需要的商品。
  • 但是,每个摊位都有自己的“地盘”,顾客不能随便进入摊位后面的小房间,因为那里存
  • 放着摊主的私人物品,也就是私有成员。

包作用域就像菜市场里的“地盘”:

  • 公有成员就像摆在摊位上的商品,所有顾客都可以自由购买。
  • 私有成员就像藏在小房间里的私人物品,只有摊主自己才能使用。

1.2 示例

Example1: 公有成员

package mainimport "fmt"var name string = "小叮当" // 公有变量func sayHello() {fmt.Println("Hello,", name) // 可以访问公有变量
}func main() {sayHello()
}

Output:
Hello, 小叮当

解析:

  • name 是一个公有变量,在同一个包内的所有函数都可以访问它。
  • 函数 sayHello() 可以访问 name 变量,因为它们都在同一个包内。

Example 2:私有成员

package mainimport "fmt"type Person struct {name string // 私有成员age int
}func (p Person) sayHello() {fmt.Println("Hello, 我的名字是", p.name) // 可以访问私有成员
}func main() {p := Person{name: "小叮当", age: 10}//p.name = "Go" // 无法访问私有成员p.sayHello()
}

Output:

Hello, 我的名字是小叮当

解析:

  • name 是 Person 类型的一个私有成员,只有 Person 类型的方法才能访问它。
  • 函数 sayHello() 是 Person 类型的方法,它可以访问 name 变量。
  • 在 main() 函数中,无法直接访问 p.name 变量,因为它是一个私有成员。

1.3 总结

  • 包作用域是 Go语言中一个重要的概念,它可以帮助我们更好地组织代码。
  • 公有成员可以让其他包的代码访问,而私有成员只能在本包内使用。
  • 理解包作用域可以帮助我们避免代码冲突和错误。

不追求山顶的景色,享受攀登的过程,让我们期待下面学习。
在这里插入图片描述

http://www.lryc.cn/news/334356.html

相关文章:

  • 24考研-东南大学916经验贴
  • 【AI面试】YOLO 如何通过 k-means 得到 anchor boxes的?Yolo、SSD 和 faster rcnn 的正负样本定义
  • MySQL高级篇(B-Tree、Btree)
  • Zookeeper脑裂解决方案
  • 常用日常脚本
  • Longan Pi 3H 开发板体验
  • SpringCloud Alibaba Sentinel 创建流控规则
  • Mysql底层原理五:如何设计、用好索引
  • python学习杂记
  • C# Socket发送、接收结构体
  • ics-05-攻防世界
  • Web API(三)之事件流事件委托其他事件
  • SSL证书的作用是什么?
  • 皮具5G智能制造工厂数字孪生可视化平台,推进企业数字化转型
  • RH850从0搭建Autosar开发环境【3X】- Davinci Configurator之Port模块配置详解(MCAL配置)
  • 多叉树题目:子树中标签相同的结点数
  • 帝国CMS模板源码整站安装说明(图文)
  • 物联网系统未来的发展趋势
  • 基于支持 GPT 的服务的初创公司
  • 基于springboot实现教师人事档案管理系统项目【项目源码+论文说明】
  • 上行上传rsync+inotify
  • 借助ChatGPT写作:打造学术论文中的亮点与互动
  • 逐步学习Go-sync.Mutex(详解与实战)
  • 每日三道面试题之 Java并发编程 (一)
  • 车身稳定控制系统原理是什么?
  • vue3前端加载动画 lottie-web 的简单使用案例
  • 基于java+springboot+vue实现的健身房管理系统(文末源码+Lw)23-223
  • 10款白嫖党必备的ai写作神器,你都知道吗? #媒体#人工智能#其他
  • Docker工作流
  • 深入浅出 -- 系统架构之分布式集群的分类