I believe that if you are going to work with timestamps is better to do it in epoch stamps, so in GO epoch is type int64.
package main
import (
"fmt"
"time"
"strconv"
)
func main() {
now := time.Now()
nanos := now.UnixNano()
bufferTimestamp := strconv.FormatInt(nanos, 10)
fmt.Printf("bufferTimestamp value: %s\n", bufferTimestamp)
timestamp, err := strconv.ParseInt(string(bufferTimestamp), 10, 64)
if err != nil {
fmt.Printf("Error: %d of type %T\n", timestamp, timestamp)
panic(err)
} else {
fmt.Printf("Converted value: %d\n", timestamp)
}
}
By running this you will have an output like this.
$ go run test/convert_stringtoint64.go
bufferTimestamp value 1556951794912716618 of type string
Converted value 1556951794912716618 of type int64