我正在使用Go 1.7rc3编写Go应用程序.
我有一片uint64(var dirRange []uint64),我想排序.
sort包有一个功能,sort.Ints()但它需要[]int和我一样[]uint64.
我该怎么办?我可以输入所有切片吗?
谢谢
vic*_*azo 33
从1.8版开始,您可以使用更简单的功能sort.Slice.在您的情况下,它将类似于以下内容:
sort.Slice(dirRange, func(i, j int) bool { return dirRange[i] < dirRange[j] })
Run Code Online (Sandbox Code Playgroud)
这避免了必须为排序定义任何类型.
abh*_*ink 11
您可以sort.Interface在您的上面定义dirRange,可以是类型别名[]uint64:
type DirRange []uint64
func (a DirRange) Len() int { return len(a) }
func (a DirRange) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
func (a DirRange) Less(i, j int) bool { return a[i] < a[j] }
func main() {
dirRange := DirRange{2, 5, 7, 1, 9, 4}
sort.Sort(dirRange)
fmt.Println(dirRange)
}
Run Code Online (Sandbox Code Playgroud)
输出:
[1 2 4 5 7 9]
Run Code Online (Sandbox Code Playgroud)
这样您就可以避免直接投射并直接使用数组.由于基础类型是切片[]uint64,您仍然可以使用常规切片操作.例如:
dirRange := make(DirRange, 10)
dirRange = append(dirRange, 2)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10971 次 |
| 最近记录: |