1 回答
TA贡献1836条经验 获得超4个赞
我假设您在问如何打印指针切片的值,而不是地址。在这种情况下,使用fmt.Println(raytraces)orfmt.Printf("%v", raytraces) // or %+v or %#v将返回地址。
您可能希望看到类似的问题golang how to print struct value with pointer。
基本上,您需要手动打印这些字段。以下是一些不同的方法:
遍历切片并通过取消引用元素来打印值
func GetRaytracesFor(id uint) []*RayTrace {
raytraces := make([]*RayTrace, 0)
err := GetDB().Table("ray_traces").Where("user_id = ?", id).Last(&raytraces).Error
if err != nil {
return nil
}
for _, raytrace := range raytraces {
// before dereferencing pointer, check if nil
if raytrace == nil {
fmt.Println("<nil>")
continue
}
// notice the * before raytrace
fmt.Printf("%+v\n", *raytrace)
}
return raytraces
}
制作类型RayTrace工具fmt.Stringer
// implements fmt.Stringer
func (r RayTrace) String() string {
return fmt.Sprintf("RayTrace{Var1:%v Var2:%v Var3:%v UserID:%v}", r.Var1, r.Var2, r.Var3, r.UserID)
}
func GetRaytracesFor(id uint) []*RayTrace {
raytraces := make([]*RayTrace, 0)
err := GetDB().Table("ray_traces").Where("user_id = ?", id).Last(&raytraces).Error
if err != nil {
return nil
}
// now we can print anywhere without need to loop each element
fmt.Println(raytraces)
return raytraces
}
- 1 回答
- 0 关注
- 233 浏览
添加回答
举报
