使用接口和动态类型进行变量分配

我有一个脚本,它根据用户输入从不同的数据源中提取,具有通用界面和每个数据源的类型。每个数据源都有一个方法来获取该特定源的元数据。我正在努力理解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)

}


慕沐林林
浏览 156回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go