github.com/nsqio/nsq@v1.3.0/internal/app/float_array.go (about)

     1  package app
     2  
     3  import (
     4  	"fmt"
     5  	"log"
     6  	"sort"
     7  	"strconv"
     8  	"strings"
     9  )
    10  
    11  type FloatArray []float64
    12  
    13  func (a *FloatArray) Get() interface{} { return []float64(*a) }
    14  
    15  func (a *FloatArray) Set(param string) error {
    16  	for _, s := range strings.Split(param, ",") {
    17  		v, err := strconv.ParseFloat(s, 64)
    18  		if err != nil {
    19  			log.Fatalf("Could not parse: %s", s)
    20  			return nil
    21  		}
    22  		*a = append(*a, v)
    23  	}
    24  	sort.Sort(*a)
    25  	return nil
    26  }
    27  
    28  func (a FloatArray) Swap(i, j int)      { a[i], a[j] = a[j], a[i] }
    29  func (a FloatArray) Less(i, j int) bool { return a[i] > a[j] }
    30  func (a FloatArray) Len() int           { return len(a) }
    31  
    32  func (a *FloatArray) String() string {
    33  	var s []string
    34  	for _, v := range *a {
    35  		s = append(s, fmt.Sprintf("%f", v))
    36  	}
    37  	return strings.Join(s, ",")
    38  }