gpt4 book ai didi

go - 查询结果为内存地址

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

我是新手,仍然对指针感到困惑,但我已经按照查询多行的说明进行操作,但我得到的结果是一系列内存地址而不是实际值。

这个相同的结构,减去 rows.Next() 对单个用户来说工作得很好,所以我对问题的根源感到困惑。

最终,我试图在模板中使用该函数的结果,但我试图弄清楚它的结构,以便我可以在我的 HTML 中对它进行排列。

例如,如果我尝试运行下面的代码,我会得到如下内容:&{[0xc... 0xc...0xc...]}

type User struct {
Id int `json:"int"`
Name string `json:"name"`
Role string `json:"role"`
}

type Users struct {
Users []*User
}

func getUsers(company string) *Users {
users := Users{}

rows, err := db.Query("SELECT Id, Name, Role...")
// Check err

defer rows.Close()

for rows.Next() {
user := &User{}

err = rows.Scan(&user.Id, &user.Name, &user.Role)
// Check err

users.Users = append(users.Users, user)
}

err = rows.Err()
// Check err

return &users
}

这就是我尝试使用该函数的方式

func userView(w http.ResponseWriter, r *http.Request) {
res := getUsers("test") // Should return 3 results

fmt.Println(res.Users)
}

最佳答案

问题不在于您获取数据,而在于您对数据的显示。 fmt.Println() 在给定指针时打印内存地址——因此它的行为完全符合预期。

如果你这样做:

fmt.Printf("%+v", res.Users)

您会得到不同的结果,可能更接近您的预期。

如果您打算使用模板,那么您应该这样做——您的模板应该能够很好地访问每个 User 的字段。

但简短的回答是:您的测试方法无效。

关于go - 查询结果为内存地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47457688/

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