Go

Golang:複数条件でソートする

華麗なコードではない。

バージョン

golang

1.8.7くらい

https://hub.docker.com/r/library/golang/tags/

実装

package main

import (
    "fmt"
    "sort"
)

func main() {
    people := []struct {
        Name string
        Age  int
    }{
        {"Steve", 70},
        {"Carol", 99},
        {"Alice", 100},
        {"Bob", 1},        
        {"Alice", 26},
    }

    sort.Slice(people, func(i, j int) bool {
        if people[i].Name < people[j].Name {
            return true
        } else if people[i].Name == people[j].Name {
            if people[i].Age < people[j].Age {
                return true
            }
        }
        return false
    })
    fmt.Println("Order by name, age:", people)
}

出力結果

Order by name, age: [{Alice 26} {Alice 100} {Bob 1} {Carol 99} {Steve 70}]

参考

https://golang.org/pkg/sort/#Slice