登录
首页 >  Golang >  Go问答

将字符串与结构切片中的结构字段进行比较(sort.Search golang)

来源:stackoverflow

时间:2024-02-12 17:12:20 333浏览 收藏

IT行业相对于一般传统行业,发展更新速度更快,一旦停止了学习,很快就会被行业所淘汰。所以我们需要踏踏实实的不断学习,精进自己的技术,尤其是初学者。今天golang学习网给大家整理了《将字符串与结构切片中的结构字段进行比较(sort.Search golang)》,聊聊,我们一起来看看吧!

问题内容

type user struct {
    name string
    age  int
}
data := []user{
    {
        name: "timothy",
        age:  23,
    },
    {
        name: "johnson",
        age:  45,
    },
    {
        name: "jason",
        age:  44,
    },
    {
        name: "handson",
        age:  15,
    },
    {
        name: "andrew",
        age:  41,
    },
}
fmt.Println(data)
val := "johnson"
found := false
i := sort.Search(len(data), func(i int) bool {
    println(i)
    return data[i].name == val
})
if i < len(data) && data[i].name == val {
    found = true
}
fmt.Println(val, found)

我尝试在包含一些字符串字段的结构数组中搜索字符串,但无法获得匹配项,例如使用 johnson 或 andrew。问题是什么?谢谢!


正确答案


这会将数据按顺序排序,然后对其进行搜索。

我必须声明一个类型 users,它是 user 的一部分, 然后针对用户类型实现 len/cmp/swap

sort.search函数使用>=

package main

import (
    "fmt"
    "sort"
)

type user struct {
    name string
    age  int
}

type users []user

func (o users) Len() int           { return len(o) }
func (o users) Less(i, j int) bool { return o[i].name < o[j].name }
func (o users) Swap(i, j int)      { o[i], o[j] = o[j], o[i] }
func main() {
    data := users{
        {
            name: "timothy",
            age:  23,
        },
        {
            name: "johnson",
            age:  45,
        },
        {
            name: "jason",
            age:  44,
        },
        {
            name: "handson",
            age:  15,
        },
        {
            name: "andrew",
            age:  41,
        },
    }
    sort.Sort(data)
    fmt.Println(data)

    val := "johnson"
    found := false
    i := sort.Search(len(data), func(i int) bool {
        println(i)
        return data[i].name >= val
    })
    if i < len(data) && data[i].name == val {
        found = true
    }
    fmt.Println(val, found)
    return
}

以上就是《将字符串与结构切片中的结构字段进行比较(sort.Search golang)》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>