面向对象编程三大特性之 「封装 」实例 - Go语言 -- 十安辰

    技术2022-07-10  136

    一、要求

    创建程序,在 model 包中定义 Account 结构体:在 main 函数中体会 Golang 的封装性。Account 结构体要求具有字段:账号(长度在 6-10 之间)、余额(必须>20)、密码(必须是六通过 SetXxx 的方法给 Account 的字段赋值。在 main 函数中测试

    二、实现

    //model\account.go package model import ( "fmt" ) 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 } //合法,返回account对象地址 return &account{ accountNo: accountNo, pwd: pwd, balance: balance, } } //account的方法 //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("存款成功,当前余额为: ", account.balance) } //2.取款 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("取款成功,当前余额为: ", account.balance) } //3.查询余额 func (account *account)Query(pwd string){ //首先核对密码 if pwd !=account.pwd{ fmt.Println("输入的密码错误") return } fmt.Printf("账号:%v的账户当前的余额为:%v ", account.accountNo, account.balance) } //main\main.go package main import ( "chapter12/fengzhuang/model" "fmt" ) func main() { //创建一个account变量 account := model.NewAccount("jzh111", "000000", 40) if account != nil { fmt.Println("创建成功=", account) } else { fmt.Println("创建失败") } }
    Processed: 0.010, SQL: 9