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

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

开发者学堂课程【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 函数中测试

相关文章
|
4月前
|
存储 C语言
学生管理系统(C语言简单实现)
这篇文章是关于使用C语言实现一个简单的学生管理系统,包括文件的基本应用、数据结构设计、函数实现以及用户界面交互。
学生管理系统(C语言简单实现)
|
6月前
|
Java
19. 【Java教程】封装
19. 【Java教程】封装
23 0
|
7月前
|
存储 程序员 C++
C++系列十七:类与对象
C++系列十七:类与对象
|
编译器 C语言
【C】结构体+自定义类型知识点大全(基础,进阶,简洁,全面)(一)
【C】结构体+自定义类型知识点大全(基础,进阶,简洁,全面)
【C】结构体+自定义类型知识点大全(基础,进阶,简洁,全面)(二)
【C】结构体+自定义类型知识点大全(基础,进阶,简洁,全面)
|
前端开发
前端学习笔记202304学习笔记第六天-动态数组类名
前端学习笔记202304学习笔记第六天-动态数组类名
59 0
|
存储 人工智能 C++
C++学习笔记(十二)——String类练习题(下)
C++学习笔记(十二)——String类练习题(下)
C++学习笔记(十二)——String类练习题(下)
|
Go 开发者
函数课堂练习 | 学习笔记
简介:快速学习函数课堂练习
|
网络协议 测试技术 Go
管道的细节和课堂练习|学习笔记
快速学习管道的细节和课堂练习
|
前端开发
#yyds干货盘点# 手动封装callES6
#yyds干货盘点# 手动封装callES6
93 0
#yyds干货盘点# 手动封装callES6