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 }