golang 结构体 实践

38 阅读1分钟
package main

import "fmt"

type Account struct {
	AccountNo string
	Pwd       string
	Balance   float64
}

// 存
func (Account *Account) Deposit(AccountNo string, Pwd string, money float64) {
	if Pwd != Account.Pwd {
		fmt.Println("密码错误")
		return

	}
	if AccountNo != Account.AccountNo {
		fmt.Println("账号错误")
		return
	}
	Account.Balance += money

}
func (Account *Account) Withdraw(AccountNo string, Pwd string, money float64) {
	if Pwd != Account.Pwd {
		fmt.Println("密码错误")
		return

	}
	if AccountNo != Account.AccountNo {
		fmt.Println("账号错误")
		return
	}
	if Account.Balance < money {
		fmt.Println("余额不足")
		return
	}
	Account.Balance -= money

}

func (Account *Account) QueryBalance(AccountNo string, Pwd string) {
	if Pwd != Account.Pwd {
		fmt.Println("密码错误")
		return

	}
	if AccountNo != Account.AccountNo {
		fmt.Println("账号错误")
		return
	}
	fmt.Println("余额为", Account.Balance)
}

func main() {

	var myCount = &Account{
		AccountNo: "123456",
		Pwd:       "123456",
		Balance:   100,
	}
	var AccountNo string
	var Pwd string
	for {
		// 输入过就不需要再输入了
		if AccountNo == "" || Pwd == "" {
			fmt.Println("请输入账号")
			fmt.Scanln(&AccountNo)
			fmt.Println("请输入密码")
			fmt.Scanln(&Pwd)
		}
		//   查询余额
		myCount.QueryBalance(AccountNo, Pwd)
		fmt.Println("请选择操作")
		fmt.Println("1.存款")
		fmt.Println("2.取款")
		var op int
		fmt.Scanln(&op)
		if op == 1 {
			fmt.Println("请输入存款金额")
			var money float64
			fmt.Scanln(&money)
			myCount.Deposit(AccountNo, Pwd, money)
		}
		if op == 2 {
			fmt.Println("请输入取款金额")
			var money float64
			fmt.Scanln(&money)
			myCount.Withdraw(AccountNo, Pwd, money)
		}else{
			fmt.Println("输入错误")
			break
		}

	}
}