title: Are typedefs for primitive values equivalent in golang?
body: <p>Given this code:</p>
  
  <pre><code>type Philosopher int
  const (
      Epictetus Philosopher = iota
      Seneca
  )
  
  func Quote(who Philosopher) string {
      fmt.Println("t: ", reflect.TypeOf(who))
      switch who {
      case Epictetus:
          return "First say to yourself what you would be; 
                  and do what you have to do"
      case Seneca:
          return "If a man knows not to which port he sails, 
                  No wind is favorable"
      }
      return "nothing"
  }
  </code></pre>
  
  <p>Calling <code>Quote(5)</code> will print <code>Foo.Philosopher</code> as the type for 5.
  Why didn't the type checker complain since that is what a type safe enums are supposed to do i.e. limit the scope of values ?</p>