package main
import (
"fmt"
"sort"
"strconv"
)
// Comparator function to sort strings as decimal numbers
func compareAsDecimal(a, b string) bool {
// Convert strings to float64 for comparison
numA, _ := strconv.ParseFloat(a, 64)
numB, _ := strconv.ParseFloat(b, 64)
return numA < numB
}
func main() {
// Input slice of strings
numbers := []string{"12.3", "5.6", "789.1", "3.14", "456.0", "0", "0.01", "4.0"}
// Sort the slice using the custom comparator
sort.Slice(numbers, func(i, j int) bool {
return compareAsDecimal(numbers[i], numbers[j])
})
fmt.Println("Sorted slice of decimal strings:")
for _, num := range numbers {
fmt.Print(num + " ")
}
}
/*
run:
Sorted slice of decimal strings:
0 0.01 3.14 4.0 5.6 12.3 456.0 789.1
*/