我正在尝试在golang中测试我的数据库(即Postgres)模型。问题是当我从数据库中检索到一个带有time.Time类型的不匹配值的字段值时。这是代码:

a := myStruct{aTime: time.Now().UTC(), ...}
res, err := db.Exec("INSERT INTO my_table VALUES ($1, $2, ...) RETURNING id", a.aTime, ...)
...
// some logic for setting id in struct a
...
row := db.QueryRow("SELECT * FROM my_table WHERE id = $1", a.id)
var test *myStruct
row.Scan(test)
reflect.DeepEqual(a, test) // returns False
fmt.Printf("%v\n%v", a, test)
// {2020-02-25 12:37:16.906605805 +0000 UTC ...}
// {2020-02-25 12:37:16.906606 +0000 UTC ...}
timestamp with time zone

我也尝试了以下方法:

a.aTime.Equal(test.aTime) // returns false
a.aTime = a.aTime.Round(time.Second)
test.aTime = test.aTime.Round(time.Second)
a.aTime.Equal(test.aTime) // returns true

但仍然反映。DeepEqual返回false。问题是时间字段,因为当我执行以下反射时,reflect.DeepEqual变为true

a.aTime = test.aTime

有谁知道如何解决这一问题?