封装课堂练习讲解|学习笔记

简介: 快速学习封装课堂练习讲解

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

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


封装课堂练习讲解

 

内容简介

一、课堂习题

二、代码实现

三、执行结果

 

一、 课堂习题

课堂习题要求:创建程序,在 model 包中定义 Account 结构体:在main 函数中体会 Golang 的封装性。

① Account 结构体要求具有字段:账号(长度在6-10之间)、余额(必须>20)、密码(必须是六位)

②通过 SetXxx 的方法给 Account 的字段赋值,通过 GetXxx 方法获取字段的值。(自己独立完成)

③在 main 函数中测试

 

二、 代码实现

首先打开 VSCode ,新建一个文件夹称为 encapexercise (封装的练习题),在其中再建两个文件夹,一个称为 main ,另一个称为 model 。在 model 中新建一个文件称为 account.go ,输入以下代码:

package model

import (

“fmt”

)

//定义一个结构体account

type account struct {

accountNo string

pwd string

balance float64

} 

//工厂模式的函数-构造函数

func NewAccount(account string, pwd string, balance float64)*account {

if len(accountNo) < 6 || len(accountNo) > 10 {

fmt.Println(“账号的长度不对...”)

return nil

}

if len(pwd) != 6 {

fmt.Println(“密码的长度不对...”)

return nil

}

if balance < 20 {

fmt.Println(“余额数目不对...”)

return nil

}

return &account{

accountNo : accountNo,

pwd : pwd,

balance : balance,

}

}

//方法

//1.存款

func (account *account) Deposite(money float64, pwd string) {

//看下输入的密码是否正确

if pwd != account.pwd {

fmt.Println(“你输入的密码不正确”)

return

}

//看看存款金额是否正确

if money <= 0 {

fmt.Println(“你输入的金额不正确”)

return

}

account.balance += money

fmt.Println(“存款成功~~”)

}

//取款

func (account *account) WithDraw(money float64, pwd string) {

//看下输入的密码是否正确

if pwd != account.pwd {

fmt.Println(“你输入的密码不正确”)

return

}

//看看取款金额是否正确

if money <= 0 || money > account.balance {

fmt.Println(“你输入的金额不正确”)

return

}

account.balance -= money

fmt.Println(“取款成功~~”)

}

//查询余额

func (account *account) Query(pwd string) {

//看下输入的密码是否正确

if pwd != account.pwd {

fmt.Println(“你输入的密码不正确”)

return

}

fmt.Println(“你的账号=%v 余额=%v \n”, account.accountNo,account.balance)

}

再打开 main 包,新建一个文件称为 main.go ,用来测试以上代码是否能用,在 main.go 中输入以下代码:

package main

import (

“fmt”

“go_code/chapter11/encapexercise/model”

)

func main() {

//创建一个account变量

account := model.NewAccount(“jzh11111”,”999999”,40)

if account != nil {

fmt.Println(“创建成功=”,account)

} else {

fmt.Println(“创建失败”)

}

}

 

三、执行结果

1. 代码执行结果

D:\goproject\src\go_code>cd chapter11

D:\goproject\src\go_code\chapter11>dir

驱动器 D 中的卷是 新加卷

卷的序列号是 D2AD-BC9F

D:\goproject\src\go_code\chapter11 的目录

06  15:16      .

06  15:16      ..

06  11:41      abstract

06  15:16      encapexercise

06  14:29      encapsulate

0 个文件          0个字节

5 个目录 33,792,491,520 可用字节

D:\goproject\src\go_code\chapter11>cd encapexercise

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

CreatcFile main.go: The syston cannot find the file specified.

D:\goproject\src\go_code\chapter11\encapexercise>cd main

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

创建成功= &

image.png2. 测试代码

①现将上文 main/main.go 包中的代码修改账号一处,将“jzh11111”修改为”jzh1”,用来检测是否会显示创建失败,执行结果为:

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

账号的长度不对...

创建失败

②再将上文 main/main.go  包中的代码修改密码一处,将”999999“修改为”000”,执行结果为:

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

密码的长度不对...

创建失败

3. 代码说明

说明:在老师的代码基础上增加如下功能:

通过 SetXxx 的方法给 Account 的字段赋值,通过 GetXxx 方法获取字段的值。(自己独立完成)

在 main 函数中测试

相关文章
|
机器学习/深度学习 并行计算 图形学
CPU、GPU、TPU、NPU等到底是什么?
CPU、GPU、TPU、NPU等到底是什么?
2706 3
|
Web App开发 编解码 前端开发
告别固定字体大小:CSS使用相对单位提升网页可访问性和兼容性
在 Web 开发领域中,有很多误解流传,即使它们被反驳了很多次也仍然存在。"外部链接应该总是在新标签页中打开" 就是一个很好的例子。CSS Tricks 在将近十年前就对此进行了详细的解释(简而言之:大多数情况下是错误的),但它似乎仍然在某些角落中存在。
|
12月前
|
PyTorch 算法框架/工具
Pytorch学习笔记(三):nn.BatchNorm2d()函数详解
本文介绍了PyTorch中的BatchNorm2d模块,它用于卷积层后的数据归一化处理,以稳定网络性能,并讨论了其参数如num_features、eps和momentum,以及affine参数对权重和偏置的影响。
1302 0
Pytorch学习笔记(三):nn.BatchNorm2d()函数详解
|
7月前
|
人工智能 算法 数据可视化
分享5款好用有趣的小软件
本文分享5款宝藏级软件:学术笔记工具Zettlr,支持Markdown与LaTeX排版;文件清理专家DuplicateCleaner,精准定位重复文件;全能在线工具箱3171.cn,集视频、音频、图片处理等功能于一体;免费PPT模板资源平台优品PPT,助力高效演示;开源绘图软件Krita,适合插画、漫画创作。这些软件功能强大但可能鲜为人知,值得尝试!
142 0
|
12月前
|
API
vue3知识点:provide 与 inject
vue3知识点:provide 与 inject
157 4
vue3知识点:provide 与 inject
|
存储 前端开发 安全
《Solidity 简易速速上手小册》第9章:DApp 开发与 Solidity 集成(2024 最新版)(上)
《Solidity 简易速速上手小册》第9章:DApp 开发与 Solidity 集成(2024 最新版)
225 0
|
存储 缓存 JSON
10款好用的开源 HarmonyOS 工具库
HarmonyOS NEXT 正式版即将发布,你在学习鸿蒙的过程还有哪些好用的工具库吗,欢迎分享给V 哥,关注威哥爱编程,一起学习鸿蒙开发。
654 4
|
测试技术 持续交付 开发工具
掌握 Git 钩子:提升代码质量和团队协作效率
在软件开发中,保证代码质量和团队协作至关重要。Git 钩子通过在特定操作(如提交、推送)时自动执行脚本,增强了代码审查、自动化测试和持续集成。常见钩子类型包括 `pre-commit`、`post-commit`、`pre-push` 和 `post-receive`。通过配置这些钩子,开发者可以实现代码风格检查、自动化测试和自动部署等任务,从而提升代码质量和团队协作效率。例如,`pre-commit` 钩子可用于运行 ESLint 检查 JavaScript 代码风格,确保每次提交都符合编码规范。
|
关系型数据库 数据库 开发工具
Stable Diffusion 本地部署教程
Stable Diffusion 本地部署教程
563 0
|
程序员 编译器 C++
C++ 新特性 static_assert
C++ 新特性 static_assert
157 1