我有一个脚本,它根据用户输入从不同的数据源中提取,具有通用界面和每个数据源的类型。每个数据源都有一个方法来获取该特定源的元数据。我正在努力理解idomatic Go 实现以根据 input 切换类型。
这个例子不能编译,但它是最能说明我想要做什么的版本:
type Post interface {
GetMetadata() bool
}
type YouTubeVideo struct {
ID string
Title string
ChannelID string
ChannelTitle string
PublishedAt string
}
func (ig *YouTubeVideo) GetMetadata() bool {
// ...
}
type InstagramPic struct {
ID string
ShortCode string
Type string
Title string
PublishedAt string
}
func (ig *InstagramPic) GetMetadata() bool {
// ...
}
func main() {
var thePost Post
switch domain {
case "youtube":
thePost = new(YouTubeVideo)
thePost.ID = pid
case "instagram":
thePost = new(InstagramPic)
thePost.ShortCode = pid
}
thePost.GetMetadata()
fmt.Println(thePost.title)
}
相关分类