package main import ( "fmt" "strconv" ) const prompt = ` 请输入数据选择相应功能: 0. 批量创建测试账户 1. 手动创建账户 2. 显示账号信息 3. 存款 4. 取钱 5. 转账 6. 根据id排行显示账户 7. 根据存款排行显示账户 8. 删除账户 9. 删除id大于?的账户 10. 查询银行账户总个数 11. 查询相同金额的账户个数 12. 迭代打印 99. 退出 ` func main() { fmt.Println("欢迎来到银行!") Exit: for { fmt.Print(prompt) var num int fmt.Scanf("%d\n", &num) switch num { case 0: fmt.Printf("请输入要创建的【账户个数】") var initCount int fmt.Scanf("%d\n", &initCount) for i := 0; i < initCount; i++ { if err := newAccount("testName"+strconv.Itoa(i), float64(i*10)); err != nil { fmt.Print(err) } else { fmt.Printf("创建测试账户成功,i=%d\n", i) } } case 1: fmt.Println("请输入【账号】和【钱】") var name string var balance float64 fmt.Scanf("%s %f\n", &name, &balance) if err := newAccount(name, balance); err != nil { fmt.Println("创建账号错误,err=", err) } case 2: fmt.Println("请输入账号【id】,查看账号信息!") var id int64 fmt.Scanf("%d\n", &id) if a, err := getAccount(id); err != nil { fmt.Println(err) } else { fmt.Printf("%#v\n", a) } case 3: fmt.Println("请输入【账号id】及【存款金额】") var id int64 var deposit float64 fmt.Scanf("%d %f\n", &id, &deposit) if a, err := makeDeposit(id, deposit); err == nil { fmt.Printf("存款成功!你的账户信息:%#v\n", a) } else { fmt.Print(err) } case 4: fmt.Println("请输入【账号id】及【取款金额】!") var id int64 var withDraw float64 fmt.Scanf("%d %f\n", &id, &withDraw) if a, err := makeWithDraw(id, withDraw); err == nil { fmt.Printf("取款成功!你的账户信息:%#v\n", a) } else { fmt.Print(err) } case 5: fmt.Println("请分别输入【转账账户id】、【转账对象id】及【金额】") var id int64 var targetId int64 var count float64 fmt.Scanf("%d %d %f\n", &id, &targetId, &count) if err := makeTrans(id, targetId, count); err == nil { fmt.Printf("转账成功!") } else { fmt.Println(err) } case 6: as, err := getAccountAscId() if err != nil { fmt.Println(err) } else { for i, a := range as { fmt.Printf("%d: %#v\n", i, a) } } case 7: as, err := getAccountsByBalance() if err != nil { fmt.Println(err) } else { for i, a := range as { fmt.Printf("%d: %#v\n", i, a) } } case 8: fmt.Println("请输入要删除的【账户id】") var id int64 fmt.Scanf("%d\n", &id) if err := deleteAccountById(id); err == nil { fmt.Println("删除账户成功!") } else { fmt.Print(err) } case 9: fmt.Printf("请输入开始删除的【账户id】") var id int64 fmt.Scanf("%d\n", &id) if err := deleteAccountByIdGreaterThen(id); err == nil { fmt.Println("删除成功") } else { fmt.Print(err) } case 10: if count, err := getAccountCount(); err == nil { fmt.Printf("当前银行总账户数:%d\n", count) } else { fmt.Print(err) } case 11: fmt.Println("请输入所要查看的【金额数】") var banlance float64 fmt.Scanf("%f\n", &banlance) if count, err := getSameBalanceAccountCount(banlance); err == nil { fmt.Printf("当前银行中金额为%f的总账户数:%d\n", banlance, count) } else { fmt.Print(err) } case 12: fmt.Printf("迭代打印开始-------\n") x.Iterate(new(Account), func(idx int, bean interface{}) error { fmt.Printf("%d:%#v\n", idx, bean.(*Account)) return nil }) case 99: fmt.Println("bye!") break Exit default: } } }