I'm trying to put external library under the interface but it seems that 
this is not possible the way I thought it would be...

My interfaces are as following...
















*type Beginner interface {    Begin(ctx context.Context) (Tx, error)}type 
Querier interface {    Exec(ctx context.Context, sql string, arguments 
...interface{}) (commandTag pgconn.CommandTag, err error)    Query(ctx 
context.Context, sql string, args ...interface{}) (pgx.Rows, error)   
 QueryRow(ctx context.Context, sql string, args ...interface{}) 
pgx.Row}type Tx interface {    Commit(ctx context.Context) error   
 Rollback(ctx context.Context) error    Querier}*

Now I have a function....


*func NewFoo (b Beginer) {}*

Into that function I want to pass a struct instance with the method that 
has a following signature. (This function is not under my control).

*Begin(ctx context.Context) (pgx.Tx, error)*

Now the* pgx.Tx* has a following signature



















*type Tx interface {    Begin(ctx context.Context) (Tx, error)   
 Commit(ctx context.Context) error    Rollback(ctx context.Context) error   
 CopyFrom(ctx context.Context, tableName Identifier, columnNames []string, 
rowSrc CopyFromSource) (int64, error)    SendBatch(ctx context.Context, b 
*Batch) BatchResults    LargeObjects() LargeObjects    Prepare(ctx 
context.Context, name, sql string) (*pgconn.StatementDescription, error)   
 Exec(ctx context.Context, sql string, arguments ...interface{}) 
(commandTag pgconn.CommandTag, err error)    Query(ctx context.Context, sql 
string, args ...interface{}) (Rows, error)    QueryRow(ctx context.Context, 
sql string, args ...interface{}) Row    // Conn returns the underlying 
*Conn that on which this transaction is executing.    Conn() *Conn}*

The go is giving me the following error.

cannot use me.DBpgx() (type *pgxpool.Pool) as type db.Beginner in argument 
to service.NewFoo:
    *pgxpool.Pool does not implement db.Beginner (wrong type for Begin 
method)
        have Begin(context.Context) (pgx.Tx, error)
        want Begin(context.Context) (db.Tx, error)
        
how come that this is forbidden as my Tx interface is clearly a subset of 
pgx.Tx

BR,
Miha

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/9fc0ff89-867a-464b-a955-07a63eec4296n%40googlegroups.com.

Reply via email to