golang 结构体组成的切片中结构体中有个bool值只有一个结构体的bool值为true其他都为false请将这个切片排序将为true的放在第一个位置
可以使用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的前面。最后将切片输出即可得到排序后的结果
原文地址: https://www.cveoy.top/t/topic/huZo 著作权归作者所有。请勿转载和采集!