title: Is it possible to make it work without using an interface?
body: <p>Why does the following work when I add type <code>Pet []interface{Name()}</code> but not when I add type <code>Pet []string</code>? Is it possible to make it work <strong>without</strong> using an interface?</p>
  
  <pre><code>package main
  
  import "fmt"
  
  type Pet []string // cannot use Cat("Puss") (type Cat) as type string in array or slice literal
  // type Pet []interface{Name()} // prt Fluffy
  
  type Cat string
  
  func (c Cat) Name() {
      fmt.Println(c)
  }
  
  func main() {
      p := Pet{Cat("Whiskers"), Cat("Fluffy")} 
      p1 := p[1]
      p1.Name() 
  }
  
  ./oo3.go:15:14: cannot use Cat("Whiskers") (type Cat) as type string in array or slice literal
  ./oo3.go:15:31: cannot use Cat("Fluffy") (type Cat) as type string in array or slice literal
  ./oo3.go:17:4: p1.Name undefined (type string has no field or method Name)
  </code></pre>