title: Implement logical OR for types within switch
body: <p>I have a <code>[]interface{}</code> I am iterating over, and checking the type of each element within a switch. I would like to add a 'catch-all' case for any of several numeric types, i.e. <code>int || float32 || float64</code>.</p>
  
  <p>It seems we are able to check whether an element is of a single distinct type, but I have not been able to figure out the syntax for checking multiple types with <code>||</code> (or).</p>
  
  <p>Is this possible? What I've tried (<a href="https://play.golang.org/p/eyaHqufoDTA" rel="nofollow noreferrer">Playground</a>):</p>
  
  <pre><code>package main
  
  import (
      "fmt"
  )
  
  func main() {
  
      things := []interface{}{"foo", 12, 4.5, true}
  
      for _, thing := range things {
  
          switch t := thing.(type) {
  
          // How can we implement logical OR for types to implement a catch-all for numerics?
          // Throws error: "type &lt;type&gt; is not an expression"
          // case ( int || float64 ) :
          //  fmt.Printf("Thing %v is a 'numeric' type: %T\n", thing, t)
  
  
          // Single discrete types work fine, of course
          case string :
              fmt.Printf("Thing %v is of type: %T\n", thing, t)   
          case int :
              fmt.Printf("Thing %v is of type: %T\n", thing, t)
          case float64 :
              fmt.Printf("Thing %v is of type: %T\n", thing, t)
          case bool :
              fmt.Printf("Thing %v is of type: %T\n", thing, t)
          default :
              fmt.Printf("Thing %v is of unknown type\n", thing)
          }
      }
  
  }
  </code></pre>