博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
金额抵扣顺序的测试代码
阅读量:4141 次
发布时间:2019-05-25

本文共 1530 字,大约阅读时间需要 5 分钟。

     写个程序,测一个小功能, OK:

package mainimport (    "fmt"    "sort"    )type Money struct {    Principal int  // 第二优先级    Interest  int  // 第一优先级    Time      int  // 在同一优先级下,再利用时间优先级}func main() {    p1 := &Money{100, 80, 2}    p2 := &Money{70, 60, 1}    p3 := &Money{90, 80, 2}    arr := make([]*Money, 0, 0)    arr = append(arr, p1, p2, p3)        // 按时间排序    sort.Slice(arr, func(i, j int) bool	{        return arr[i].Time < arr[j].Time	})	    repay := 240        // 还款抵扣逻辑    OUT:    for j := 1; j <= 2; j++ {         for _, v := range arr {            if repay <= 0 {                break OUT            }                        if j == 1 {                if v.Interest <= 0 {                    continue                }                                if repay <= v.Interest {                    v.Interest -= repay                    repay = 0                    break OUT                }else{                    repay -= v.Interest                    v.Interest = 0                }            }                        if j == 2 {                if v.Principal <= 0 {                    continue                }                                if repay <= v.Principal {                    v.Principal -= repay                    repay = 0                    break OUT                }else{                    repay -= v.Principal                    v.Principal = 0                }            }        }    }        fmt.Println(p1)    fmt.Println(p2)    fmt.Println(p3)    fmt.Println(repay)}

       结果:

&{100 0 2}&{50 0 1}&{90 0 2}0

       不多说。

 

转载地址:http://ryrvi.baihongyu.com/

你可能感兴趣的文章
我和ip_conntrack不得不说的一些事
查看>>
Linux 查看端口使用情况
查看>>
文件隐藏
查看>>
两个linux内核rootkit--之二:adore-ng
查看>>
两个linux内核rootkit--之一:enyelkm
查看>>
关于linux栈的一个深层次的问题
查看>>
rootkit related
查看>>
配置文件的重要性------轻化操作
查看>>
cp后文件时间会变, mv后文件时间不会变化------定位一个低概率core问题时, 差点误导了自己
查看>>
又是缓存惹的祸!!!
查看>>
为什么要实现程序指令和程序数据的分离?
查看>>
我对C++ string和length方法的一个长期误解------从protobuf序列化说起(没处理好会引起数据丢失、反序列化失败哦!)
查看>>
一起来看看protobuf中容易引起bug的一个细节
查看>>
无protobuf协议情况下的反序列化------貌似无解, 其实有解!
查看>>
make -n(仅列出命令, 但不会执行)用于调试makefile
查看>>
make -k(keep going)命令会在发现错误时继续执行(用于一次发现所有错误)
查看>>
makefile中“-“符号的使用
查看>>
tars源码漫谈第18篇------tc_tea.h/tc_tea.cpp(TEA加解密)
查看>>
tars源码漫谈第19篇------tc_bitmap.h/tc_bitmap.cpp(位内存操作)
查看>>
tars源码漫谈第20篇------tc_mysql.h/tc_mysql.cpp(mysql API的封装)
查看>>