本文共 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/