Go写的第一个小程序记账系统,来啦


本文摘自网络,作者,侵删。

需求说明

记账系统能够记录收入、支出,并能够打印收支明细表。

技能点

  1. Scanf 函数
  2. Printf 函数 格式化
  3. map 集合
  4. array 数组
  5. slice 切片

实现效果

截屏2021-07-07 下午11.52.06.png

程序源码

package main

import (
	"fmt"
	"os"
)

const LINE string = "************"

func menu() {
	fmt.Println(LINE + "记账" + LINE)
	fmt.Printf("%8.10s\n", "1.收支详细")
	fmt.Printf("%6.10s\n", "2.支出")
	fmt.Printf("%6.10s\n", "3.收入")
	fmt.Printf("%6.10s\n", "4.退出")
}

func main() {
	// 初始化变量
	var money int = 10000
	item := []map[string]string{}
	// for 循环
	for {
		var no int
		menu()
		fmt.Printf("请选择功能编号: ")
		fmt.Scanf("%d", &no)
		switch no {
		case 1:
			// 收支详细
			fmt.Println("序号		收/支		金额")
			// 顺序
			for i := 0; len(item) > i; i++ {
				for sz := range item[i] {
					fmt.Printf("%2d%16.20s%17s\n", i+1, sz, item[i][sz])
				}
			}
			fmt.Printf("当前余额 %d 元\n", money)
		case 2:
			// 支出
			var expenditure int
			fmt.Printf("当前余额 %d 元\n", money)
			fmt.Printf("本次支出: >>")
			fmt.Scanf("%d", &expenditure)
			money = money - expenditure
			expenditureStr := fmt.Sprintf("%d", expenditure)
			// 追加到item数组列表
			item = append(item, map[string]string{"-": expenditureStr})
		case 3:
			// 收入
			var earning int
			fmt.Printf("本次收入: >>")
			fmt.Scanf("%d", &earning)
			money = money + earning
			earningStr := fmt.Sprintf("%d", earning)
			// 追加到item数组列表
			item = append(item, map[string]string{"+": earningStr})
		case 4:
			// 退出
			os.Exit(0)
		}
	}
}
复制代码

重要代码点解读

支出和收入功能,主要实现逻辑:定义item数组,将金额记录map格式中,多次支出/收入则追加数组中,收入详细功能,for循环遍历数组即可。

item := []map[string]string{}

...

// 支出
var expenditure int
fmt.Printf("当前余额 %d 元\n", money)
fmt.Printf("本次支出: >>")
fmt.Scanf("%d", &expenditure)
money = money - expenditure
expenditureStr := fmt.Sprintf("%d", expenditure)
// 追加到item数组列表
item = append(item, map[string]string{"-": expenditureStr})
复制代码

更多的小程序案例,持续更新.... 小伙伴们敬请期待


本文来自:掘金

感谢作者:程序猿的flag

查看原文:Go写的第一个小程序记账系统,来啦

相关阅读 >>

手撸Golang 行为型设计模式 中介者模式

手撸Golang 结构型设计模式 适配器模式

Golang slice 的一些事

Golang 如何结束一个协程

手撸Golang 架构设计原则 接口隔离原则

计数排序

手撸Golang Go与微服务 saga模式之9 小结/gitee源码

聊聊dubbo-Go-proxy的discoveryservice

cento8安装Golang及配置

Golang 管道线程安全吗

更多相关阅读请进入《Go》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...