Golang 中函数的泛化
Generalisation of function in Golang
我想编写一个处理 SQL 查询的通用函数。
Sqlx模块提供函数StructScan()
,自动将结果扫描到struct字段中。
type Place struct {
Country string
City sql.NullString
TelephoneCode int `db:"telcode"`
}
rows, err := db.Queryx("SELECT * FROM place")
for rows.Next() {
var p Place
err = rows.StructScan(&p)
}
因此,建议的函数签名如下所示:
func Query(db *sql.DB, query) {
rows, err := db.Queryx("SELECT * FROM place")
for rows.Next() {
var p CustomType
err = rows.StructScan(&p)
}
}
问题是我事先不知道表示为自定义类型的变量的确切类型,因为它因特定查询而异(某些查询 returns string,另一个 int 等)。
其中一个选项是将 type CustomType
作为参数传递给 Query
。但是,我不知道如何用需要的类型初始化局部变量 p
。
有办法吗?
我想编写一个处理 SQL 查询的通用函数。
Sqlx模块提供函数StructScan()
,自动将结果扫描到struct字段中。
type Place struct {
Country string
City sql.NullString
TelephoneCode int `db:"telcode"`
}
rows, err := db.Queryx("SELECT * FROM place")
for rows.Next() {
var p Place
err = rows.StructScan(&p)
}
因此,建议的函数签名如下所示:
func Query(db *sql.DB, query) {
rows, err := db.Queryx("SELECT * FROM place")
for rows.Next() {
var p CustomType
err = rows.StructScan(&p)
}
}
问题是我事先不知道表示为自定义类型的变量的确切类型,因为它因特定查询而异(某些查询 returns string,另一个 int 等)。
其中一个选项是将 type CustomType
作为参数传递给 Query
。但是,我不知道如何用需要的类型初始化局部变量 p
。
有办法吗?