您需要一个自定义int64类型,以便您可以让它实现sql.Scanner接口。


type Timestamp int64


func (ts *Timestamp) Scan(src interface{}) error {

    switch v := src.(type) {

    case time.Time:

        *ts = Timestamp(v.Unix())

    case []byte:

        // ...

    case string:

        // ...

    }

    return nil

}

有了这个,您可以在扫描结果时使用转换:


type Record struct {

    Date int64

}


var r Record

if err := db.QueryRow("select data from table").Scan((*Timestamp)(&r.Date)); err != nil {

    panic(err)

}

或者您可以在结构定义中更改字段的类型,然后您可以直接扫描到该字段:


type Record struct {

    Date Timestamp

}


var r Record

if err := db.QueryRow("select data from table").Scan(&r.Date); err != nil {

    panic(err)

}