可以使用sort.Slice()函数来对切片进行排序,同时使用一个自定义的比较函数来实现按照bool值排序的功能。

下面是一个示例代码:

package main

import (
    "fmt"
    "sort"
)

type MyStruct struct {
    Value bool
    Data  string
}

func main() {
    // 构造结构体切片
    data := []MyStruct{
        {false, "data1"},
        {false, "data2"},
        {true, "data3"},
        {false, "data4"},
        {false, "data5"},
    }

    // 自定义比较函数
    sort.Slice(data, func(i, j int) bool {
        return !data[i].Value && data[j].Value
    })

    // 输出排序结果
    fmt.Println(data)
}

在比较函数中,我们将为true的结构体放在前面,即当i的bool值为false,j的bool值为true时,返回true,表示i应该排在j的前面。最后将切片输出即可得到排序后的结果

golang 结构体组成的切片中结构体中有个bool值只有一个结构体的bool值为true其他都为false请将这个切片排序将为true的放在第一个位置

原文地址: https://www.cveoy.top/t/topic/huZo 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录