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

一、要求

  • 创建程序,在 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("创建失败")
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值