go实现小项目
1.家庭记账本【这是面向过程写法】
package main import "fmt" func main() { key:=""; loop:=true; money:=0.0; banacle:=1000.00; notes:=""; details:=""; flag:=false; for { fmt.Println("\n-------------------家庭收支记账软件-----------------------"); fmt.Println(" 1.收支明细"); fmt.Println(" 2.登记收入"); fmt.Println(" 3.登记支出"); fmt.Println(" 4.退出软件"); fmt.Println("请选择(1-4):"); fmt.Scanln(&key); switch key { case "1": if flag { fmt.Println("-------------------收支明细记录-----------------------"); fmt.Println("收支\t账户余额\t收支金额\t说明"); fmt.Println(details); }else{ fmt.Println("当前没有收支明细...来一笔吧"); } case "2": fmt.Println("本次收入:"); fmt.Scanln(&money); banacle=banacle+money;//收入 fmt.Println("收入来源是:"); fmt.Scanln(¬es); details+=fmt.Sprintf("\n收入%12v\t%10v\t%12v",banacle,money,notes); flag=true; case "3": fmt.Println("本次支持金额:"); fmt.Scanln(&money); banacle-=money; fmt.Println("本次支出说明"); fmt.Scanln(¬es); details+=fmt.Sprintf("\n支出%12v\t%10v\t%12v",banacle,money,notes); case "4": //loop=false; fmt.Println("你确定要退出y/n"); choice:=""; for { fmt.Scanln(&choice); if choice == "y" || choice == "n" { break; } } if choice == "y" { loop = false; } } if !loop { break; } } }
2.面向对象写法[unitls包]
package unitls import ( "fmt" "strconv" ) type Note struct { Money float64 Banacle float64 Desc string } //展示收支列表 func (note Note) ShowList(details string){ fmt.Println("-------------------收支明细记录-----------------------"); fmt.Println("收支\t账户余额\t收支金额\t说明"); fmt.Println(details); } //添加收入方法 func (note Note) AddData(money float64,desc string) string { details:=fmt.Sprintf("\n收入%12v\t%10v\t%12v",note.Banacle,money,desc); return details; } //减少收入 func (note Note) DelData(money float64,desc string) string { note.Banacle, _ = strconv.ParseFloat(fmt.Sprintf("%.2f", note.Banacle-money), 64) details:=fmt.Sprintf("\n支出%12v\t%10v\t%12v",note.Banacle,money,desc); return details; } //退出功能 func (note Note) Exitprocess(flag * bool){ fmt.Println("你确定要退出y/n:"); choose:=""; for { fmt.Scanln(&choose); if choose == "y" || choose=="n" { break; }else{ fmt.Println("请选择正确信息"); } } if choose == "y" { *flag = false; } }
主程序
package main import ( "fmt" "unitls" ) func main(){ details:="";//描述列表 note:=unitls.Note{Money: 0.00,Banacle: 1000.00,Desc: ""}; key:=""; loop:=true; money:=0.00;//接受输入交易 desc:="";//描述 for { showTitle();//展示内容 fmt.Scanln(&key); switch key { case "1": note.ShowList(details); case "2": fmt.Println("本次收入:"); fmt.Scanln(&money); fmt.Println("输入来源:"); fmt.Scanln(&desc); note.Banacle= note.Banacle+money; details+=note.AddData(money,desc); case "3": fmt.Println("本次支出:"); fmt.Scanln(&money); fmt.Println("支出来源:"); fmt.Scanln(&desc); details+=note.DelData(money,desc); case "4": note.Exitprocess(&loop); } if !loop { break; } } } func showTitle() { fmt.Println("\n-------------------家庭收支记账软件-----------------------"); fmt.Println(" 1.收支明细"); fmt.Println(" 2.登记收入"); fmt.Println(" 3.登记支出"); fmt.Println(" 4.退出软件"); fmt.Println("请选择(1-4):"); }