【问题标题】:how do I use my import package's struct as a type in go如何在 go 中使用我的导入包的结构作为类型
【发布时间】:2013-08-17 20:40:02
【问题描述】:

我正在一个项目中工作并在 go 中使用“database/sql”包。我想使用在包“database/sql”中声明的struct“DB”作为我的func的参数,所以我可以使用sql.Open()的返回值和我的func的参数。有可能吗?代码如下:

package main

import (
    "database/sql"
    "fmt"
    _ "github.com/Go-SQL-Driver/MySQL"
)

func main() {
    var table string = "tablename"

    db, err := sql.Open("mysql", "user:password@/dbname")

    // read data from database
    read(db, table)
}

func read(db *DB, table string) {
    // read
}

此代码引发“未定义:DB”错误。

【问题讨论】:

    标签: go


    【解决方案1】:

    您必须对导入的实体使用限定符 - 'name' 来自的包名称:

    func read(db *sql.DB, table string)
    

    【讨论】:

    • 好的,所以我遇到了问题。所以每当我让它返回时,类型就会从 *sql.DB 切换到 *DB。每当我尝试执行测试时,它都会抱怨 *sql.DB != *DB,因此他们不能使用我创建的 mockDB 来输入接受 *sql.DB 的参数。
    猜你喜欢
    • 1970-01-01
    • 2021-03-20
    • 2021-12-03
    • 2012-10-24
    • 2019-12-06
    • 2018-05-12
    • 2023-03-07
    • 1970-01-01
    • 2021-06-17
    相关资源
    最近更新 更多