为了账号安全,请及时绑定邮箱和手机立即绑定

高朗:为什么是sql。Tx 不实现驱动程序

高朗:为什么是sql。Tx 不实现驱动程序

Go
慕哥9229398 2022-10-04 14:27:52
为什么在下面的示例中编译器说不实现,看到确实满足了接口: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) {}


查看完整回答
反对 回复 2022-10-04
  • 1 回答
  • 0 关注
  • 117 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号