为什么在下面的示例中编译器说不实现,看到确实满足了接口: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条经验 获得超4个赞
你的实现需要完全匹配,因此 Store() 必须接受驱动程序。发射类型。不仅仅是一个 *sql.Tx.
因为 sql.Tx 实现驱动程序。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 关注
- 117 浏览
添加回答
举报
0/150
提交
取消
