title: Marshal and Unmarshal a time.Time, Got different values
body: <p>I am try to update my Go code from 1.8 to 1.9. but, i got some problem:</p>
  
  <pre><code>package simple_struct
  
  import (
      "time"
      "encoding/json"
      "github.com/stretchr/testify/assert"
      "testing"
  )
  
  type SimpleStruct struct {
      CreateTime time.Time
      Other      string
  }
  
  func NewSimpleStruct() *SimpleStruct {
      return &amp;SimpleStruct{
          CreateTime: time.Now(),
      }
  }
  
  func Test(t *testing.T) {
      s1 := NewSimpleStruct()
      data, err := json.Marshal(s1)
      assert.Nil(t, err)
      s2 := &amp;SimpleStruct{}
      err = json.Unmarshal(data, s2)
      assert.Nil(t, err)
  
      assert.Equal(t, s2, s1)
      // this is not equal
      // output:
      /*
  
      Diff:
      --- Expected
      +++ Actual
      @@ -1,3 +1,3 @@
      (*simple_struct.SimpleStruct)({
          - CreateTime: (time.Time) 2017-12-01 14:54:53.948875421 +0800 CST,
          + CreateTime: (time.Time) 2017-12-01 14:54:53.948875421 +0800 CST m=+0.001827244,
      */
  }
  </code></pre>
  
  <p>It is working in Golang 1.8, but not in Golang 1.9. </p>
  
  <p>I know that Golang 1.9 has update <code>time.Time</code>, but I do not understand this.</p>