-6ren">
gpt4 book ai didi

loops - "Infinite loop"导致无法访问的代码

转载 作者:IT王子 更新时间:2023-10-29 01:41:54 28 4
gpt4 key购买 nike

我目前正在尝试使用 html 分词器 https://godoc.org/golang.org/x/net/html .

所以我想做的是:从 url 获取所有链接,如果 url 包含特定字符串 -> 添加到 url-list。

resp, err = client.Get("someurl")
var urls []string

if err != nil {
log.Fatal(err)
}

z := html.NewTokenizer(resp.Body)

for {
tt := z.Next()

switch {
case tt == html.ErrorToken:
return
case tt == html.StartTagToken:
t := z.Token()

isAnchor := t.Data == "a"
if !isAnchor {
continue
}

ok, url := getHref(t)
if !ok {
continue
}
if strings.Contains(url, "somestring") {
urls = append(urls, url)
}

}
}

fmt.Println(urls)

这不起作用,因为“fmt.Println(urls)”无法访问。循环 ofc 在某个时候结束......但这不会编译。如何让循环后的代码可以访问?

问候

最佳答案

循环中没有break。它结束的唯一方法是通过 return 将控制发送出此函数。这意味着 fmt.Println(urls) 不可访问。

试试这个:

L:
for {
tt := z.Next()

switch {
case tt == html.ErrorToken:
break L
case tt == html.StartTagToken:
t := z.Token()

isAnchor := t.Data == "a"
if !isAnchor {
continue
}

ok, url := getHref(t)
if !ok {
continue
}
if strings.Contains(url, "somestring") {
urls = append(urls, url)
}

}
}

关于loops - "Infinite loop"导致无法访问的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39946185/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com