Golang вызывает методы на указателе интерфейса
я используюGorp для доступа к базе данных у Gorp есть стандартDbMap
тип, а такжеTransaction
введите, когда вы хотите иметь возможность откат. Оба типа реализуютSqlExecutor
интерфейс.
Поэтому я программирую противSqlExecutor
интерфейс, так что я могу использовать транзакции, если я хочу без необходимости изменять мой код.
Затем я инициализирую горпаDbMap
или жеTransaction
и передать его как свойство поля. Проблема в том, что мне нужен указатель на горпобъект»иначе как я смогу откатиться если я используюTransaction
если горпобъект» передается по значению вместо ссылки.
Затем я получаю сообщение, такое как
r.Gorp.Get undefined (type *gorp.SqlExecutor has no field or method Get)
когда я пытаюсь использовать свой код. Как я называю методы?
Пример кода ниже.
package repositories
import (
"github.com/coopernurse/gorp"
)
type Repository struct {
Gorp *gorp.SqlExecutor // < Need pointer so I can rollback
}
func (r *Repository) GetById(i interface{}, key interface{}) interface{} {
obj, err := r.Gorp.Get(i, key)
if err != nil {
panic(err)
}
return obj
}