我刚刚开始掌握 Go(两天前开始,写了不到 1000 行),我仍然想知道一些习语。
我需要按长度降序对一段字符串进行排序。我确实喜欢这样:
func ... {
... do business ...
sort.Sort(stringsLongestFirst(severalThousandStrings))
... carry on and be happy, because it works ...
}
type stringsLongestFirst []string
func (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类型,还是我必须计算一些复制开销?
繁花不似锦
相关分类