У меня есть составной тип, определенный для использования в таблице:
CREATE TYPE duration AS (
hours NUMERIC,
minutes NUMERIC
);
CREATE TABLE foo (
id SERIAL PRIMARY KEY,
my_duration duration
);
INSERT INTO foo (id, my_duration) VALUES
(1, ROW(1, 30));
Как я могу отсканировать это с помощью database/sql
?Когда я реализую интерфейс сканера с помощью
func (d *Duration) Scan(value interface{}) error {
log.Println(value)
if value == nil {
*d = Duration{
Hours: -1,
Minutes: -1,
}
return nil
}
if duration, ok := value.(Duration); ok {
*d = Duration(duration)
return nil
}
return errors.New("Failed to scan duration")
}
Тип интерфейса выглядит как []uint8
, а само значение представляет собой закодированный массив, что-то вроде [40 50 44 51 51 41]
.Как правильно разобрать составной тип?
edit: у меня есть Duration
структура, определенная как
type Duration struct {
Hours int
Minutes int
}