gpt4 book ai didi

sql - 将查询结果从结构转换为另一个 Golang 包的字符串

转载 作者:数据小太阳 更新时间:2023-10-29 03:40:37 26 4
gpt4 key购买 nike

我在网上和 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)
}

编译时出现这个错误:

cannot use users (type []*User) as type string in return argument

如何获取正确的返回值?

预期的输入是

JD John Doe --OR-- {id:"JD",name:"John Doe"}

最佳答案

将此添加到您的代码中:

type userSlice []*User

func (us userSlice) String() string{
var s []string
for _, u := range us {
if u != nil {
s = append(s, fmt.Sprintf("%s %s", u.id, u.name))
}
}
return strings.Join(s, "\n")
}

type User struct{
id string
name string
}

在您的 Fetch 函数中,像这样替换最后一个 return 语句:

func Fetch(query string) (string) {
// Note that we declare the User type outside the function.
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(userSlice(users).String()) // Replace this line in your code
}

关于sql - 将查询结果从结构转换为另一个 Golang 包的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54058668/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com