登录
首页 >  Golang >  Go问答

使用 strings.Contains 方法检索特定项在结构中的位置

来源:stackoverflow

时间:2024-02-25 23:48:16 276浏览 收藏

目前golang学习网上已经有很多关于Golang的文章了,自己在初次阅读这些文章中,也见识到了很多学习思路;那么本文《使用 strings.Contains 方法检索特定项在结构中的位置》,也希望能帮助到大家,如果阅读完后真的对你学习Golang有帮助,欢迎动动手指,评论留言并分享~

问题内容

我是编程新手,我正在查看与 go 一起使用的不同代码的示例。我有一个简单的两个函数程序,用于解析 xml 表并返回搜索到的项目:

package main

import (
    "encoding/xml"
    "os"
    "strings"
)

type document struct {
    Title string `xml:"title"`
    URL   string `xml:"url"`
    Text  string `xml:"abstract"`
    ID    int
}

func LoadDocuments(path string) ([]document, error) {
    f, err := os.Open(path)
    if err != nil {
        return nil, err
    }
    defer f.Close()

    dec := xml.NewDecoder(f)
    dump := struct {
        Documents []document `xml:"doc"`
    }{}
    if err := dec.Decode(&dump); err != nil {
        return nil, err
    }

    docs := dump.Documents
    for i := range docs {
        docs[i].ID = i
    }
    return docs, nil
}

func SearchData(docs []document, term string) []document {
    var r []document
    for _, doc := range docs {
        if strings.Contains(doc.Text, term) {
            r = append(r, doc)
        }
    }
    return r
}

如何让 searchdata 函数返回 doc.url 实例而不是整个文档块?


解决方案


使用 selector expression doc.url 访问 document struct 中的 url 字段。收集 strings 中的 slice 中的 url 字段值。返回字符串切片。

func SearchData(docs []document, term string) []string {
    var r []string
    for _, doc := range docs {
        if strings.Contains(doc.Text, term) {
            r = append(r, doc.URL)
        }
    }
    return r
}

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《使用 strings.Contains 方法检索特定项在结构中的位置》文章吧,也可关注golang学习网公众号了解相关技术文章。

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