Интерфейс driver.Valuer имеет один метод: Value() (driver.Value, error). Возвращает значение для записи в БД. driver.Value может быть int64, float64, bool, []byte, string или time.Time. Реализуешь на своём типе — и он автоматически сериализуется при INSERT/UPDATE. Пара Scanner/Valuer — стандартный способ кастомной (де)сериализации для database/sql.