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

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

开发者学堂课程【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++基础快速入门
|
6月前
|
JSON 前端开发 Java
SpringMVC概述、入门案例及工作流程
SpringMVC概述、入门案例及工作流程
33 0
|
12月前
Axure快速入门(02) - 入门例子(登录案例)
Axure快速入门(02) - 入门例子(登录案例)
61 0
|
Java
19 接口快速入门
接口就是把给出的一些未实现的方法,封装到一起;某个类需要实现接口的时候再重写这些方法
90 0
|
监控 Dubbo Java
使用场景演示 | 学习笔记
快速学习使用场景演示,介绍了使用场景演示系统机制, 以及在实际应用过程中如何使用。
193 0
使用场景演示 | 学习笔记
|
前端开发
快速入门less原理以及常用基本知识
快速入门less原理以及常用基本知识(动态计算rem)
180 0
快速入门less原理以及常用基本知识
|
网络协议 测试技术 Go
接口介绍和快速入门|学习笔记
快速学习接口介绍和快速入门
接口介绍和快速入门|学习笔记
|
分布式计算 Spark 开发者
SearchType 案例_演示 | 学习笔记
快速学习 SearchType 案例_演示
SearchType 案例_演示 | 学习笔记
|
网络协议 Java 测试技术
继承快速入门应用实例|学习笔记
快速学习继承快速入门应用实例
继承快速入门应用实例|学习笔记
|
Java Scala 开发者
函数基本介绍和快速入门|学习笔记
快速学习函数基本介绍和快速入门。
108 0