猿问

为什么不使用 go-pkg-rss 返回 Atom 项目标题?

要么我失去理智,我不理解指针数组,要么库被破坏了。也许你可以帮忙。下面的代码似乎可以很好地获取 Atom 项目,但是查看它们的标题时会返回为空字符串。


(这恰好是通过 http 实现的,我认为这不是问题,但当然一切皆有可能。)


package main


import (

    "fmt"

    rss "github.com/jteeuwen/go-pkg-rss"

    "net/http"

    "os"

)


var items []*rss.Item

var channels []*rss.Channel


func hello(w http.ResponseWriter, r *http.Request) {

    feed := rss.New(5, true, chanHandler, itemHandler)

    url := "http://stackoverflow.com/feeds"

    feed.Fetch(url, nil)

    fmt.Printf("Sent fetch for %s\n", url)

    fmt.Fprintf(w, "There are %d items in %s\n\n", len(items), url)

    for key, value := range items {

        fmt.Fprintf(w, "%d: %s\n\n", key, value.Title)

    }

}


func main() {

    http.HandleFunc("/", hello)

    http.ListenAndServe(":"+os.Getenv("PORT"), nil)

}


func chanHandler(feed *rss.Feed, newchannels []*rss.Channel) {

    channels = newchannels

}


func itemHandler(feed *rss.Feed, ch *rss.Channel, newitems []*rss.Item) {

    items = newitems

}


汪汪一只猫
浏览 186回答 3
3回答

holdtom

你的代码也不适合我。虽然获取的记录数是正确的,但记录本身没有价值。随意在项目的 github 页面上提交问题。另请注意,您将项目传输到 http 处理程序的方式在itemHandler并发执行时存在数据竞争,并且不知道在 http 执行for循环时是否调用它。最好为此使用频道!
随时随地看视频慕课网APP

相关分类

Go
我要回答