为了账号安全,请及时绑定邮箱和手机立即绑定

创建特定类型的数组并重用它

创建特定类型的数组并重用它

Go
三国纷争 2022-09-26 17:45:28
我在为我的 graphql 解析器创建有效负载时遇到问题。如何重写它以返回完成的数组?我被困在里面,无法返回数据。c.OnHTML("article", func(e *colly.HTMLElement) {}type Article struct {    Title     string `bson:"title"`    Source    string `bson:"source"`    Url       string `bson:"url"`    Timestamp string `bson:"timestamp"`}func (r *RootResolver) News() ([]models.Article, error) {    c := colly.NewCollector(        colly.MaxDepth(2),        colly.Async(),    )    c.Limit(&colly.LimitRule{Parallelism: 10})    articles := []models.Article{}    c.OnHTML("article", func(e *colly.HTMLElement) {        articleModel := []models.Article{            {                Title:     e.ChildText("h3 a"),                Source:    e.ChildText("a[data-n-tid]"),                Timestamp: e.ChildAttr("div:last-child time", "datetime"),                Url:       e.ChildAttr("a[href]", "href"),            },        }        fmt.Println(articleModel)    })    c.Visit(SOMEURLHERE)    c.Wait()    return articles, nil}
查看完整描述

1 回答

?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

如果需要获取完整的文章列表,则需要将新文章追加到函数内部的切片中,而不是创建新切片。articlesc.OnHTML

并返回方法的切片末尾。articlesNews()

    articles = append(articles, models.Article{
        Title:     e.ChildText("h3 a"),
        Source:    e.ChildText("a[data-n-tid]"),
        Timestamp: e.ChildAttr("div:last-child time", "datetime"),
        Url:       e.ChildAttr("a[href]", "href"),
    })

在当前实现中, 创建类型的空片。在 内部,您创建了另一个名为 和 元素的类型切片。这两个切片没有任何联系。因此,您需要将新元素附加到切片中,并将其与文章一起返回。articles := []models.Article{}models.Articlec.OnHTMLmodels.ArticlearticleModelarticles


查看完整回答
反对 回复 2022-09-26
  • 1 回答
  • 0 关注
  • 74 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信