亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

轉換類型以進行排序:任何運行時成本?

轉換類型以進行排序:任何運行時成本?

Go
開心每一天1111 2021-10-25 20:01:54
我剛剛開始掌握 Go(兩天前開始,寫了不到 1000 行),我仍然想知道一些習語。我需要按長度降序對一段字符串進行排序。我確實喜歡這樣:func ... {    ... do business ...    sort.Sort(stringsLongestFirst(severalThousandStrings))    ... carry on and be happy, because it works ...}type stringsLongestFirst []stringfunc (b stringsLongestFirst) Len() int           { return len(b) }func (b stringsLongestFirst) Less(i, j int) bool { return len(b[i]) > len(b[j]) }func (b stringsLongestFirst) Swap(i, j int)      { b[j], b[i] = b[i], b[j] }首先,我想知道這是否是最慣用的方法。然后,最重要的是,我想知道在我編寫stringsLongestFirst(severalThousandStrings). 字符串切片是否以某種方式被巧妙地重新解釋為一種stringsLongestFirst類型,還是我必須計算一些復制開銷?
查看完整描述

1 回答

?
繁花不似錦

TA貢獻1851條經驗 獲得超4個贊

您要轉換的類型既不是數字類型也不是字符串:[]string并且stringsLongestFirst是切片類型。

因此,轉換不會產生比復制切片標頭(12 或 24 字節,取決于字長)更多的開銷,這在將其打包為interface{}變量以調用Sort. 后備數組不會被復制,這就是為什么severalThousandStrings在調用后似乎已排序。


查看完整回答
反對 回復 2021-10-25
  • 1 回答
  • 0 關注
  • 188 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號