go实现小项目

1.家庭记账本【这是面向过程写法

package main
import "fmt"
func main() {
    key:="";
    loop:=true;
    money:=0.0;
    banacle:=1000.00;
    notes:="";
    details:="";
    flag:=false;
    for {
        fmt.Println("
-------------------家庭收支记账软件-----------------------");
        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("收支	账户余额	收支金额	说明");
                fmt.Println(details);
            }else{
                fmt.Println("当前没有收支明细...来一笔吧");
            }

        case "2":
            fmt.Println("本次收入:");
            fmt.Scanln(&money);
            banacle=banacle+money;//收入
            fmt.Println("收入来源是:");
            fmt.Scanln(&notes);
            details+=fmt.Sprintf("
收入%12v	%10v	%12v",banacle,money,notes);
            flag=true;
        case "3":
            fmt.Println("本次支持金额:");
            fmt.Scanln(&money);
            banacle-=money;
            fmt.Println("本次支出说明");
            fmt.Scanln(&notes);
            details+=fmt.Sprintf("
支出%12v	%10v	%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("收支	账户余额	收支金额	说明");
    fmt.Println(details);
}
//添加收入方法
func (note Note) AddData(money float64,desc string) string {
    details:=fmt.Sprintf("
收入%12v	%10v	%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("
支出%12v	%10v	%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("
-------------------家庭收支记账软件-----------------------");
    fmt.Println("                   1.收支明细");
    fmt.Println("                   2.登记收入");
    fmt.Println("                   3.登记支出");
    fmt.Println("                   4.退出软件");
    fmt.Println("请选择(1-4):");
}

  

原文地址:https://www.cnblogs.com/zh718594493/p/14059914.html