如何[]interface{}在Go中反转任意切片()?我宁愿不必编写Less和Swap使用sort.Reverse。有没有简单的内置方法来做到这一点?
[]interface{}
Less
Swap
sort.Reverse
没有一个简单的,内置的用于反转接口{}的部分。您可以编写一个for循环来做到这一点:
for i, j := 0, len(s)-1; i < j; i, j = i+1, j-1 { s[i], s[j] = s[j], s[i] }
Go 1.8中引入的reflect.Swapper函数可用于编写通用的反转函数:
func reverseAny(s interface{}) { n := reflect.ValueOf(s).Len() swap := reflect.Swapper(s) for i, j := 0, n-1; i < j; i, j = i+1, j-1 { swap(i, j) } }
游乐场的例子