title: TypeOf with Comparable in errors.Is
body: <p>I am learning how error comparison works in Go and found something I cannot understand.</p>
  <p>Function <code>errors.Is(err, target error)</code> checks if target is Comparable.</p>
  <pre><code>func Is(err, target error) bool {
      if target == nil {
          return err == target
      }
  
      isComparable := reflectlite.TypeOf(target).Comparable()
      for {
          if isComparable &amp;&amp; err == target {
              return true
          }
  </code></pre>
  <p><a href="https://github.com/golang/go/blob/3b5eec937018be98549dea7067964018f0e5824c/src/errors/wrap.go#L45" rel="nofollow noreferrer">Source</a></p>
  <p>Which case does this call handle given that all interfaces in Go are comparable and <code>error</code> is an interface?</p>