ЕО
type Oracle struct {
database.DB
}
а внутри функции-обёртки (находящейся в database.DB) проверять, если есть функция трансформации, то вызывать её, если нет, то отдать данные в исходном виде
Не отрицаю, что логика моя, с точки зрения go может быть в корне неверной
type Getter interface {
GetData() YourData
}
Для каждой базы данных написал бы обёртку OracleDbGetter, например, и имплементировал для неё этот интерфейс