複数のRSSフィードを統合して一つのRSSフィードを配信するコードをGoで書いているのですが、RSSフィードの型そのものはもちろん一つに定まるにもかかわらず、RSSフィードを取得するライブラリと新しく生成するライブラリが別の型と認識されてエラーが出ます
go
1type Link struct { 2 Href, Rel, Type, Length string 3} 4 5type Author struct { 6 Name, Email string 7} 8 9type Image struct { 10 Url, Title, Link string 11 Width, Height int 12} 13 14type Enclosure struct { 15 Url, Length, Type string 16} 17 18type Item struct { 19 Title string 20 Link *Link 21 Source *Link 22 Author *Author 23 Description string // used as description in rss, summary in atom 24 Id string // used as guid in rss, id in atom 25 Updated time.Time 26 Created time.Time 27 Enclosure *Enclosure 28 Content string 29} 30 31type Feed struct { 32 Title string 33 Link *Link 34 Description string 35 Author *Author 36 Updated time.Time 37 Created time.Time 38 Id string 39 Subtitle string 40 Items []*Item 41 Copyright string 42 Image *Image 43}
go
1type Item struct { 2 Title string `json:"title,omitempty"` 3 Description string `json:"description,omitempty"` 4 Content string `json:"content,omitempty"` 5 Link string `json:"link,omitempty"` 6 Updated string `json:"updated,omitempty"` 7 UpdatedParsed *time.Time `json:"updatedParsed,omitempty"` 8 Published string `json:"published,omitempty"` 9 PublishedParsed *time.Time `json:"publishedParsed,omitempty"` 10 Author *Person `json:"author,omitempty"` // Deprecated: Use item.Authors instead 11 Authors []*Person `json:"authors,omitempty"` 12 GUID string `json:"guid,omitempty"` 13 Image *Image `json:"image,omitempty"` 14 Categories []string `json:"categories,omitempty"` 15 Enclosures []*Enclosure `json:"enclosures,omitempty"` 16 DublinCoreExt *ext.DublinCoreExtension `json:"dcExt,omitempty"` 17 ITunesExt *ext.ITunesItemExtension `json:"itunesExt,omitempty"` 18 Extensions ext.Extensions `json:"extensions,omitempty"` 19 Custom map[string]string `json:"custom,omitempty"` 20} 21 22// Person is an individual specified in a feed 23// (e.g. an author) 24type Person struct { 25 Name string `json:"name,omitempty"` 26 Email string `json:"email,omitempty"` 27} 28 29// Image is an image that is the artwork for a given 30// feed or item. 31type Image struct { 32 URL string `json:"url,omitempty"` 33 Title string `json:"title,omitempty"` 34} 35 36// Enclosure is a file associated with a given Item. 37type Enclosure struct { 38 URL string `json:"url,omitempty"` 39 Length string `json:"length,omitempty"` 40 Type string `json:"type,omitempty"` 41}
上の二つの型定義ファイルはRSSフィードをパースするライブラリ(mmcdole/gofeed)とフィードを作成するライブラリ(gorilla/feeds)で定義されているフィードの構造体です。
取得したItemsを新たに作成するフィードのItemsとして渡したいのですが、その段階で
Cannot use 'items' (type []*"github.com/mmcdole/gofeed".Item) as type []*"github.com/gorilla/feeds".Item
というエラーが出ます。これはどう解決すれば良いのでしょうか。もし完璧に解決する方法がないのであればTypeScriptで言うanyのように型ガードを外せる方法を教えていただけると幸いです
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。