float_array.go

package app

import (
    "fmt"
    "log"
    "sort"
    "strconv"
    "strings"
)
//这个文件相关的代码不需要解释了吧!!!
type FloatArray []float64

func (a *FloatArray) Set(param string) error {
    for _, s := range strings.Split(param, ",") {
        v, err := strconv.ParseFloat(s, 64)
        if err != nil {
            log.Fatalf("Could not parse: %s", s)
            return nil
        }
        *a = append(*a, v)
    }
    sort.Sort(*a)
    return nil
}

func (a FloatArray) Swap(i, j int)      { a[i], a[j] = a[j], a[i] }
func (a FloatArray) Less(i, j int) bool { return a[i] > a[j] }
func (a FloatArray) Len() int           { return len(a) }

func (a *FloatArray) String() string {
    var s []string
    for _, v := range *a {
        s = append(s, fmt.Sprintf("%f", v))
    }
    return strings.Join(s, ",")
}

原文地址:https://www.cnblogs.com/zhangboyu/p/7457411.html