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
}

Antworten auf die Frage(2)

Ihre Antwort auf die Frage