go20/day06/userapp/models/account.go

51 lines
1.0 KiB
Go
Raw Normal View History

2026-03-08 11:01:59 +08:00
package models
import "errors"
// Account 银行账户(公开)
type Account struct {
ID string // 账户ID公开
Owner string // 账户所有者(公开)
balance float64 // 余额(私有,不能直接修改)
}
// NewAccount 创建账户
func NewAccount(id, owner string) *Account {
return &Account{
ID: id,
Owner: owner,
balance: 0,
}
}
// Deposit 存款(公开方法)
func (a *Account) Deposit(amount float64) error {
if !isValidAmount(amount) {
return errors.New("金额必须大于0")
}
a.balance += amount
return nil
}
// Withdraw 取款(公开方法)
func (a *Account) Withdraw(amount float64) error {
if !isValidAmount(amount) {
return errors.New("金额必须大于0")
}
if amount > a.balance {
return errors.New("余额不足")
}
a.balance -= amount
return nil
}
// GetBalance 获取余额(公开方法)
func (a *Account) GetBalance() float64 {
return a.balance
}
// isValidAmount 验证金额(私有函数)
func isValidAmount(amount float64) bool {
return amount > 0
}