持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第43天,点击查看活动详情
要求
- 创建程序在model包中定义account结构体:在main函数中体会Golang的封装性。
- account结构体要求具有字段:账号(长度在6-10之间)、余额(必须>20)、密码(必须是六 通过SetXxx的方法给Account的字段赋值。(同学们自己完成
- 在main函数中测试
代码实现
model包
package model
import "fmt"
/*
创建程序在model包中定义Account结构体:在main函数中体会Golang的封装性。
Account结构体要求具有字段:账号(长度在6-10之间)、余额(必须>20)、密码(必须是六
通过SetXxx的方法给Account的字段赋值。(同学们自己完成
在main函数中测试
*/
// 定义 Account 结构体
type account struct {
accountNo string
pwd string
balance float64
}
//工厂模式
func NewAccount(accountNo 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,
}
}
//编写Set Get方法
func (a *account) SetAccNo(accountNo string) {
if len(accountNo) < 6 || len(accountNo) > 10 {
fmt.Println("账号的长度不满足条件")
} else {
a.accountNo = accountNo
}
}
func (a *account) GetAccNo() string {
return a.accountNo
}
func (a *account) SetPwd(pwd string) {
if len(pwd) != 6 {
fmt.Println("密码的长度不满足条件")
} else {
a.pwd = pwd
}
}
func (a *account) GetPwd() string {
return a.pwd
}
func (a *account) SetBalance(balance float64) {
if balance < 20 {
fmt.Println("余额不正确")
} else {
a.balance = balance
}
}
func (a *account) GetBalance() float64 {
return a.balance
}
main包
package main
import (
"fmt"
"go_code/chapter28-encapsulate/encapExercise/model"
)
func main() {
// 定义变量
account := model.NewAccount("ICBC1574", "123456", 8888.8888)
// default account = {ICBC1574 123456 8888.8888}
fmt.Println("default account = ", *account)
// 修改密码
account.SetPwd("654321")
// change pwd account = {ICBC1574 654321 8888.8888}
fmt.Println("change pwd account = ", *account)
// 修改余额
account.SetBalance(10000)
// 查看余额
// 修改后的余额 = 10000
fmt.Printf("修改后的余额 = %v\n", account.GetBalance())
// 单独获取信息
// ICBC1574 的密码是 654321 ,余额 = 10000
fmt.Printf("%v 的密码是 %v ,余额 = %v\n", account.GetAccNo(), account.GetPwd(), account.GetBalance())
}