2 回答

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超9個(gè)贊
package main
import (
"fmt"
"sort"
"strconv"
)
type Rooms struct {
Type string
Total string
}
func main() {
CombinedRooms := [][]Rooms{
{Rooms{Type: "c", Total: "2"}, Rooms{Type: "b", Total: "1"}, Rooms{Type: "f", Total: "10"}},
{Rooms{Type: "d", Total: "5"}, Rooms{Type: "a", Total: "0"}},
}
fmt.Println(CombinedRooms)
for i, _ := range CombinedRooms {
sort.Slice(CombinedRooms[i], func(j, k int) bool {
netRateJ, _ := strconv.Atoi(CombinedRooms[i][j].Total)
netRateK, _ := strconv.Atoi(CombinedRooms[i][k].Total)
return netRateJ < netRateK
})
}
fmt.Println(CombinedRooms)
sort.Slice(CombinedRooms[:], func(i, j int) bool {
for x := range CombinedRooms[i] {
netRateJ, _ := strconv.Atoi(CombinedRooms[i][x].Total)
netRateK, _ := strconv.Atoi(CombinedRooms[j][x].Total)
if netRateJ == netRateK {
continue
}
return netRateJ < netRateK
}
return false
})
fmt.Println(CombinedRooms)
}
我現(xiàn)在明白你的問題了,上面的解決方案嘗試通過比較每個(gè)內(nèi)部切片元素來對外部切片中的內(nèi)部切片進(jìn)行排序(其中應(yīng)該對內(nèi)部切片元素進(jìn)行排序)。如果你想要更好的,我相信你必須把切片壓平并分類。

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超3個(gè)贊
您的示例https://play.golang.org/p/yyGygJyqtkn正確地對內(nèi)部切片進(jìn)行排序,它打印相同的輸出,因?yàn)閮?nèi)部切片具有相同的值。但是,如果您還想根據(jù)內(nèi)部切片的值對 CombinedRooms 進(jìn)行排序,請?zhí)砑右韵麓a:
sort.Slice(CombinedRooms, func(j, k int) bool {
netRateJ, _ := strconv.Atoi(CombinedRooms[j][0].Total)
netRateK, _ := strconv.Atoi(CombinedRooms[k][0].Total)
return netRateJ < netRateK
})
在這里找到工作代碼https://play.golang.org/p/LLCeJdlE-hM
- 2 回答
- 0 關(guān)注
- 188 瀏覽
添加回答
舉報(bào)