这可能是一种解决方案:
package main
import (
"strings"
"sort"
"fmt"
)
var listOfStrings []string = []string{
"mars bar",
"milk-duds",
"Mars bar",
"milk",
"milky-way",
"Milk",
"Milky-way",
"mars",
}
type Alphabetic []string
func (list Alphabetic) Len() int { return len(list) }
func (list Alphabetic) Swap(i, j int) { list[i], list[j] = list[j], list[i] }
func (list Alphabetic) Less(i, j int) bool {
var si string = list[i]
var sj string = list[j]
var si_lower = strings.ToLower(si)
var sj_lower = strings.ToLower(sj)
if si_lower == sj_lower {
return si < sj
}
return si_lower < sj_lower
}
func main() {
fmt.Println("UNSORTED")
printStrings(listOfStrings)
sort.Sort(Alphabetic(listOfStrings))
fmt.Println()
fmt.Println("SORTED ALPHABETICALLY")
printStrings(listOfStrings)
}
func printStrings(slice []string) {
for i := 0; i < len(slice); i++ {
fmt.Println(slice[i])
}
}
下面是输出:
UNSORTED
mars bar
milk-duds
Mars bar
milk
milky-way
Milk
Milky-way
mars
SORTED ALPHABETICALLY
mars
Mars bar
mars bar
Milk
milk
milk-duds
Milky-way
milky-way