迭代*goquery.Selection

迭代*goquery.Selection,go,Go,我几天前才开始学围棋,请耐心点。:) 我正在使用goquery从网页获取文本。像这样: package main import ( "fmt" "log" "github.com/PuerkitoBio/goquery" ) func ExampleScrape() { doc, err := goquery.NewDocument("http://lifehacker.com") if err != nil { log.Fatal(e

我几天前才开始学围棋,请耐心点。:)

我正在使用
goquery
从网页获取文本。像这样:

package main

import (
    "fmt"
    "log"
    "github.com/PuerkitoBio/goquery"
)

func ExampleScrape() {
    doc, err := goquery.NewDocument("http://lifehacker.com")
    if err != nil {
        log.Fatal(err)
        fmt.Println("fail")
    } else {
        fmt.Println("got it")
    }

    h1_text := doc.Find("h1").Text()
    fmt.Println(h1_text)
}

func main() {
    ExampleScrape()
}
这很有效。我不知道的是如何将
doc.Find(“h1”).Text()
选择转化为一个数组或切片,这样我就可以对它们进行迭代(或者,更好的是,弄清楚
goquery
是否有此功能)。我肯定有办法做到这一点,对吗

我尝试过这样做(在
func示例scrape
中):

但是它不起作用,因为'nested'/closure函数中的
append
仍然是该函数的本地函数——它不会返回到
func exampleSrape
。于是我尝试了这个:

x := doc.Find("h1").Each(func(i int, s *goquery.Selection) {
    return s.Text()
})
for _, i := range x {
    fmt.Println(x)
}
但是,
*goquery.Selection
类型不能在范围内

有没有一种方法可以遍历
*goquery。选择是这样的


顺便说一句,你们这些家伙真是太棒了。我总是被我在这里得到的答案吓坏了。如果有人能解释如何做到这一点,请提前向googolplex致谢。:)

如果您正确使用
append
,我认为您的第一次尝试可以奏效。
append(x,s.Text())
不会更改x,而是返回一个新切片

所以你真的需要做:

x = append(x, s.Text())

哈哈哦。那就行了!
x = append(x, s.Text())