【发布时间】:2019-06-01 04:33:35
【问题描述】:
我在网上和 SO 中搜索了解决方案,但没有找到适用于返回值的解决方案。这是一个简单的 sql 查询,有几行我想返回。不包括错误处理:
func Fetch(query string) (string) {
type User struct{
id string
name string
}
rows, err := db.Query(query)
users := make([]*User, 0)
for rows.Next() {
user := new(User)
err := rows.Scan(&user.id, &user.name)
users = append(users, user)
}
return(users)
}
编译时出现这个错误:
不能在返回参数中使用用户(类型 []*User)作为类型字符串
如何才能得到正确的返回值?
预期的输入是
JD John Doe --OR-- {id:"JD",name:"John Doe"}
【问题讨论】:
-
问题不清楚,但我客人说你的函数返回字符串,但你试图返回用户。
-
@ThunderCat 修改了问题
-
变量
users的类型为[]*User。该函数的返回类型是string。无法从函数返回用户,因为[]*User不是string。如果要返回字符串,则必须以某种方式将用户切片格式化为字符串。如果要返回一部分用户,请将User类型声明移出函数,以便在函数的返回类型中使用。 -
@ThunderCat " 那么您必须以某种方式将用户切片格式化为字符串。"有什么建议吗?
-
@sibert 请edit your question 提供预期的输出。提示:您所指的仍然是数据结构。把签名改成
Fetch(string)([]*User)怎么样?
标签: sql json database string go