golang封装简单应用
1|0main.go
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | package main import ( "fmt" "github.com/面向对象编程/面向对象编程思想/封装/model" ) /* 封装(encapsulation)就是把抽象出的字段和字段的操作封装在一起, 数据被保护在内部,程序的其他包只有通过被授权的操作,才能对字段进行操作 封装的理解和好处 1.隐藏实现细节 2.可以对数据进行验证,保证安全合理 如何体现封装 1.对结构体中的属性进行封装 2.通过方法,包实现封装 实现步骤 1.将结构体、字段的首字母小写(不能导出,其他包不能使用) 2.给结构体所在包提供一个工厂模式的函数,首字母大写。类似一个构造函数 3.提供一个首字母大写的Set方法,用于对属性判断并赋值 func (var 结构体类型名) SetXxx(参数列表)(返回值列表){ var.字段 = 参数 } 4.提供一个首字母大写的Get方法,用于获取属性的值 func (var 结构体类型名) GetXxx(){ return var.字段 } */ //不能随便查看人的年龄,工资等隐私,并对输入的年龄进行合理验证 //model包(person.go)main包(main.go调用Person结构体) func main() { person := model.NewPerson( "smith" ) person.SetAge(18) person.SetSal(15000) fmt.Println(person) fmt.Println( "姓名为" , person.Name, "年龄为" , person.GetAge(), "薪水为" , person.GetSal()) } |
2|0person.go
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | package model import "fmt" type person struct { Name string age int //其他包不能访问 sal float64 } //写一个工厂模式函数,相当于构造函数 func NewPerson(name string) *person { return &person{ Name: name, } } func (p *person) SetAge(age int) { if age > 0 && age < 200 { p.age = age } else { fmt.Println( "年龄范围不正确" ) } } func (p *person) GetAge() int { return p.age } func (p *person) SetSal(sal float64) { if sal > 3000 && sal < 30000 { p.sal = sal } else { fmt.Println( "薪水范围不正确" ) } } func (p *person) GetSal() float64 { return p.sal } |
__EOF__

本文作者:StarGazer
本文链接:https://www.cnblogs.com/PatrickStarGazer/p/15985126.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/PatrickStarGazer/p/15985126.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现