目录
结构体类型的切片按照从小到大排序后,剔除特定的多个索引
要删除多个索引处的元素,我们可以使用循环语句来实现。具体实现过程如下:
package main
import (
"fmt"
"sort"
)
type Person struct {
Name string
Score int
}
func main() {
persons := []Person{
{Name: "Alice", Score: 80},
{Name: "Bob", Score: 90},
{Name: "Charlie", Score: 72},
{Name: "David", Score: 85},
{Name: "Eva", Score: 92},
}
// 要删除的所有索引
indexes := []int{1, 3}
// 将索引从小到大排序
sort.Ints(indexes)
fmt.Println("Before filtering:", persons)
for i := len(indexes) - 1; i >= 0; i-- {
index := indexes[i]
persons = append(persons[:index], persons[index+1:]...)
}
fmt.Println("After filtering:", persons)
}
在上面的示例代码中,我们首先定义了一个包含多个 Person
结构体的切片 persons
。然后,我们定义了要删除的所有元素的索引列表 indexes
。接着,我们调用 sort.Ints()
函数对这些索引进行从小到大的排序。
在循环语句中,我们遍历所有要删除的索引,将切片中对应索引处的元素逐个剔除,最终得到经过修改后的切片,并输出结果。