當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


GO SliceStable用法及代碼示例

GO語言"sort"包中"SliceStable"函數的用法及代碼示例。

用法:

func SliceStable(x any, less func(i, j int) bool)

SliceStable 使用提供的 less 函數對切片 x 進行排序,保持相等元素的原始順序。如果 x 不是切片,它會Panics。

less 函數必須滿足與接口類型的 Less 方法相同的要求。

例子:

package main

import (
	"fmt"
	"sort"
)

func main() {

	people := []struct {
		Name string
		Age  int
	}{
		{"Alice", 25},
		{"Elizabeth", 75},
		{"Alice", 75},
		{"Bob", 75},
		{"Alice", 75},
		{"Bob", 25},
		{"Colin", 25},
		{"Elizabeth", 25},
	}

	// Sort by name, preserving original order
	sort.SliceStable(people, func(i, j int) bool { return people[i].Name < people[j].Name })
	fmt.Println("By name:", people)

	// Sort by age preserving name order
	sort.SliceStable(people, func(i, j int) bool { return people[i].Age < people[j].Age })
	fmt.Println("By age,name:", people)

}

輸出:

By name: [{Alice 25} {Alice 75} {Alice 75} {Bob 75} {Bob 25} {Colin 25} {Elizabeth 75} {Elizabeth 25}]
By age,name: [{Alice 25} {Bob 25} {Colin 25} {Elizabeth 25} {Alice 75} {Alice 75} {Bob 75} {Elizabeth 75}]

相關用法


注:本文由純淨天空篩選整理自golang.google.cn大神的英文原創作品 SliceStable。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。