【go技巧】结构体类型的切片按照从小到大排序后,剔除特定的多个索引

目录

结构体类型的切片按照从小到大排序后,剔除特定的多个索引


结构体类型的切片按照从小到大排序后,剔除特定的多个索引

要删除多个索引处的元素,我们可以使用循环语句来实现。具体实现过程如下:

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() 函数对这些索引进行从小到大的排序。

在循环语句中,我们遍历所有要删除的索引,将切片中对应索引处的元素逐个剔除,最终得到经过修改后的切片,并输出结果。

猜你喜欢

转载自blog.csdn.net/fanjufei123456/article/details/131175649
今日推荐