為什么在下面的示例中編譯器說不實現(xiàn),看到確實滿足了接口:sql.Txdriver.Txsql.Tximport ( "database/sql" "database/sql/driver")func main() { var myDB store = db{}}type store interface { Store(tx driver.Tx)}type db struct {}func (db) Store(tx *sql.Tx) {}type Tx interface { Commit() error Rollback() error}./prog.go:9:6: cannot use db{} (type db) as type store in assignment: db does not implement store (wrong type for Store method) have Store(*sql.Tx) want Store(driver.Tx)https://play.golang.org/p/p3vryYI_dhV
1 回答
浮云間
TA貢獻1829條經(jīng)驗 獲得超4個贊
你的實現(xiàn)需要完全匹配,因此 Store() 必須接受驅(qū)動程序。發(fā)射類型。不僅僅是一個 *sql.Tx.
因為 sql.Tx 實現(xiàn)驅(qū)動程序。Tx接口它可以作為輸入提供。
import (
"database/sql"
"database/sql/driver"
)
func main() {
var myDB store = db{}
sqlTx := &sql.Tx{}
myDB.Store(sqlTx)
}
type store interface {
Store(tx driver.Tx)
}
type db struct{}
func (db) Store(tx driver.Tx) {}
- 1 回答
- 0 關(guān)注
- 97 瀏覽
添加回答
舉報
0/150
提交
取消
