title: properly comparing and finding difference between two structs with exported members using go-cmp
body: <p>I'm writing a Go application, and I want to create a test for it,
  in that test, I query something from the db, insert it into a struct, and compare that struct values with a static struct of the same type that I had, if they match, the test succeeded, if not, I wanna show the difference. so I'm trying to use <code>go-cmp</code> package.</p>
  <p>In general I'm getting this error:</p>
  <pre><code>panic: cannot handle unexported field at {main.fooTest}.F1.Int.neg:
      &quot;math/big&quot;.Int
  consider using a custom Comparer; if you control the implementation of type, you can also consider using an Exporter, AllowUnexported, or cmpopts.IgnoreUnexported [recovered]
  </code></pre>
  <p>I'm getting this is because of the <code>pgtype.Numeric</code> that I have in my struct</p>
  <pre><code>type fooTest struct {
      I1   int
      I2   *int
      S1   string
      S2   *string
      F1   pgtype.Numeric
      F2   *pgtype.Numeric
      Ff1  float64
      Ff2  *float64
      Ia1  []int
      Ia2  []*int
      Ia3  *[]int
      Sa1  []string
      Sa2  []*string
      Sa3  *[]string
      Fa1  pgtype.Float8Array
      Fa2  *pgtype.Float8Array
      Faf1 []float64
      Faf2 []*float64
      Faf3 *[]float64
  }
  
  so I tried to test with `AllowUnnexported` but the `cmp.Equal` line still fails with that error.
  
  if !cmp.Equal(fooFoo, bar,cmp.AllowUnexported(fooTest{})) {
              t.Errorf(&quot;failed test: %v&quot;,cmp.Diff(fooFoo, bar))
          }
  </code></pre>
  <p>any ideas how to resolve this ?</p>