構造体の中に含まれる一部の要素を使って構造体のスライスを任意の順番にソートする方法です。
イメージとしては以下のような構造体がスライスに格納されているとします。
type user struct { name: string bloodType: string } Users = []user { {"tanaka", "O"}, {"kikuchi", "A"}, {"ito", "A"}, {"ishikawa", "B"}, {"kato", "AB"}, } orderList := []string{"O", "AB", "A", "B"}
このUsersスライスをorderListに定義されたbloodType(血液型)で順番にソートするイメージです。
以下のgistでは曜日でのソートを実装してみました。
gistde0e2779b4d04fc6eca78d03156ae61d
$ go run sort_days.go Status: 0 Shuffle: [{Thursday} {Sunday} {Monday} {Friday} {Tuesday} {Wednesday} {Saturday}] After Sort: [{Sunday} {Monday} {Tuesday} {Wednesday} {Thursday} {Friday} {Saturday}] # orderListをMondayからにしてみる $ go run sort_days.go Status: 0 Shuffle: [{Thursday} {Sunday} {Monday} {Friday} {Tuesday} {Wednesday} {Saturday}] After Sort: [{Monday} {Tuesday} {Wednesday} {Thursday} {Friday} {Saturday} {Sunday}]