封装快速入门案例|学习笔记

简介: 快速学习封装快速入门案例

开发者学堂课程【Go 语言核心编程 - 面向对象、文件、单元测试、反射、TCP 编程:封装快速入门案例】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/626/detail/9688


封装快速入门案例

 

内容简介:

一、案例要求

二、代码实现

 

一、 案例说明

1. 案例要求

请大家看一个程序( person.go ),即要创作一个人的一个结构体,但是不能随便查看人的年龄、工资等隐私,并对输入的年龄进行合理的验证。

2. 案例设计

设计: model 包( person.go )  main 包( main.go 调用 Person 结构体)

 

二、代码实现

首先新建一个文件夹称为”encapsulate”,随后再建两个包(不要建文件夹),其中一个包称为”model”,另一个包称为”main”,在model 包里新建一个文件夹叫 person.go ,开始输入代码:

package model

import “fmt”

type person struct {  //这里的 person 首字母小写是因为想将其封装起来,在实际开发中不一定非要小写

Name string

age int  //其他包不能直接访问...

sal float64

}

注意:此时 person 是用不到 main 包中的,所以需以下代码

//写一个工厂模式的函数,相当于构造函数

func NewPerson(name string) *person {

return &person{

Name : name,

}

}

//为了访问 age 和 sal 我们编写一对 SetXxx 的方法和 GetXxx 的方法

func (p *person) SetAge(age int) {

if age >0 && age <150 {

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

}

随后在 main 中新建一个文件称为”main.go”,并输入以下代码,看看是否能够顺利执行:

package main

import (

“fmt”

“go_code/chapter11/encapsulate/model”

)

func main() {

p := model.NewPerson(“smith”)

fmt.Println(p)

}

以下为执行结果:

D:\goproject\src\go_code\chapter11\encapsulate\main>go run main.go

&

将上文中的一些地方加以修改,如下文所示:

package main

import (

“fmt”

“go_code/chapter11/encapsulate/model”

)

func main() {

p := model.NewPerson(“smith”)

p.SetAge(18)

p.SetSal(5000)

fmt.Println(p)

}

上述代码的执行结果为:

D:\goproject\src\go_code\chapter11\encapsulate\main>go run main.go

&

再将上文中的一些地方加以修改,如下文所示:

package main

import (

“fmt”

“go_code/chapter11/encapsulate/model”

)

func main() {

p := model.NewPerson(“smith”)

p.SetAge(18)

p.SetSal(5000)

fmt.Println(p)

fmt.Println(p.Name,“age= ”,P.GetAge(),”sal=”,p.Getsal())

}

以上代码执行结果为:

D:\goproject\src\go_code\chapter11\encapsulate\main>go run main.go

&

smith age = 18  sal = 5000

相关文章
|
6月前
|
存储 算法 程序员
C++基础快速入门
C++基础快速入门
108 0
C++基础快速入门
|
BI 定位技术 Python
SWMM从入门到实践教程 04 快速入门案例的模拟执行
在左侧双击Options中的Dates,即可弹出时间的设置。此处为了教学,建议仅模拟6个小时,加快结果的生成。实际项目中,可以根据需求对指定场次的降雨时常进行模拟,并注意这个时常一定不低于降雨时常(我们的雨量计设置了2小时降雨,所有66个小时的模拟也是合理的)。
|
Java
19 接口快速入门
接口就是把给出的一些未实现的方法,封装到一起;某个类需要实现接口的时候再重写这些方法
91 0
|
监控 Dubbo Java
使用场景演示 | 学习笔记
快速学习使用场景演示,介绍了使用场景演示系统机制, 以及在实际应用过程中如何使用。
使用场景演示 | 学习笔记
|
缓存 网络架构 开发者
案例_2|学习笔记
快速学习案例_2
案例_2|学习笔记
|
网络协议 测试技术 Go
接口介绍和快速入门|学习笔记
快速学习接口介绍和快速入门
接口介绍和快速入门|学习笔记
|
分布式计算 Spark 开发者
SearchType 案例_演示 | 学习笔记
快速学习 SearchType 案例_演示
SearchType 案例_演示 | 学习笔记
|
网络协议 Java 测试技术
继承快速入门应用实例|学习笔记
快速学习继承快速入门应用实例
继承快速入门应用实例|学习笔记
|
Java Scala 开发者
函数基本介绍和快速入门|学习笔记
快速学习函数基本介绍和快速入门。
109 0
|
SQL 分布式计算 HIVE
SearchType 案例演示|学习笔记
快速学习 SearchType 案例演示。