Вы можете использовать os.Stat для получения структуры FileInfo , которая также содержит время последнего доступа (а также время последнего изменения и время последнего изменения статуса).
info, err := os.Stat("example.txt")
if err != nil {
// TODO: handle errors (e.g. file not found)
}
// info.Atime_ns now contains the last access time
// (in nanoseconds since the unix epoch)
После этого вы можете использовать time.Nanoseconds для получения текущего времени (также в наносекундах с эпохи Unix, 1 января 1970 г., 00:00:00 UTC). Чтобы получить длительность в наносекундах, просто вычтите эти два значения:
duration := time.Nanoseconds() - info.Atime_ns