Golang ruft Methoden für den Schnittstellenzeiger auf
ich benutzeGorp Für den Datenbankzugriff hat Gorp einen StandardDbMap
Typ, sowie einTransaction
Geben Sie ein, wann Sie einen Rollback durchführen möchten. Beide Typen implementieren dasSqlExecutor
Schnittstelle.
Ich programmiere also gegen dieSqlExecutor
Ich kann also Transaktionen verwenden, wenn ich möchte, ohne meinen Code ändern zu müssen.
Ich initialisiere dann einen GorpDbMap
oderTransaction
und übergeben Sie es als Feldeigenschaft. Das Problem ist, dass ich einen Zeiger auf das "Objekt" von Gorp benötige. Wie kann ich sonst ein Rollback durchführen, wenn ich a verwende?Transaction
wenn das Gorp "Objekt" als Wert anstatt als Referenz übergeben wird.
Ich bekomme dann eine Nachricht wie
r.Gorp.Get undefined (type *gorp.SqlExecutor has no field or method Get)
wenn ich versuche, meinen Code zu verwenden. Wie rufe ich die Methoden auf?
Ein Codebeispiel finden Sie unten.
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
}