title: Cannot type switch on non-interface value
body: <p>I am playing with type assertion using the following dummy code, and I got the error: </p>
  
  <blockquote>
    <p>cannot type switch on non-interface value</p>
  </blockquote>
  
  <p>Does anyone know what does that mean?</p>
  
  <pre><code>package main
  
  import "fmt"
  import "strconv"
  
  type Stringer interface {
      String() string
  }
  
  type Number struct {
      v int
  }
  
  func (number *Number) String() string {
      return strconv.Itoa(number.v)
  }
  
  func main() {
      n := &amp;Number{1}
      switch v := n.(type) {
      case Stringer:
          fmt.Println("Stringer:", v)
      default:
          fmt.Println("Unknown")
      }
  }
  </code></pre>
  
  <p><a href="http://play.golang.org/p/Ti4FG0m1mc" rel="noreferrer">http://play.golang.org/p/Ti4FG0m1mc</a></p>