第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何對元素類型是字符串別名而不是字符串本身的 Go 切片進行排序?

如何對元素類型是字符串別名而不是字符串本身的 Go 切片進行排序?

Go
明月笑刀無情 2021-11-01 16:38:07
type MyObject stringvar objects []MyObject我想對這些對象進行排序。標準庫有sort.Strings,但這需要一個[]string代替 的實例[]MyObject。我當前的解決方案是實現(xiàn)sort.Interface(如下所示)并使用sort.Sort,但我想擺脫該樣板代碼。有更好的方法嗎?type MyObjects []MyObjectfunc (objs MyObjects) Len() int {    return len(objs)}func (objs MyObjects) Less(i, j int) bool {    return strings.Compare(string(objs[i]), string(objs[j])) < 0}func (objs MyObjects) Swap(i, j int) {    o := objs[i]    objs[i] = objs[j]    objs[j] = o}
查看完整描述

2 回答

?
PIPIONE

TA貢獻1829條經(jīng)驗 獲得超9個贊

如果您的MyObject類型是string其基礎類型的“別名” ,則不能。在此處查看@JimB 的回答。

的底層類型MyObject與的底層類型string(它本身就是string:)[]MyObject相同,但 的底層類型與 的底層類型不同[]string。

但是如果你碰巧重構了一點你的類型系統(tǒng),你的問題就會消失:


type MyObjects []string


var objects MyObjects


func main() {

    objects = MyObjects{"abc", "aaa"}

    sort.Strings(objects)

    fmt.Println(objects)

}

輸出(在 上試試Go Playground):


[aaa abc]

為方便起見,Sort()如果您想,您甚至可以提供一個方法:


func (m MyObjects) Sort() {

    sort.Strings(m)

}

并使用它:


objects = MyObjects{"abc", "aaa"}

objects.Sort()

fmt.Println(objects)

(輸出相同。)


查看完整回答
反對 回復 2021-11-01
  • 2 回答
  • 0 關注
  • 185 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號