我怎样才能 get/print 一片数组指针的内容?
How can I get/print the content of a slice of array pointers?
我有以下结构和函数:
type RayTrace struct {
gorm.Model
Var1 float64 `json:"var1"`
Var2 float64 `json:"var2"`
Var3 float64 `json:"var3"`
UserID uint `json:"user_id"`
}
...
// GetRaytracesFor function
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
}
return raytraces
}
如何 get/print 从数据库调用返回的数据?
谢谢!
我假设你问的是如何打印指针切片的值,而不是地址。在这种情况下,使用 fmt.Println(raytraces)
或 fmt.Printf("%v", raytraces) // or %+v or %#v
将 return 地址。
您可能希望看到类似的问题 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
}
更多阅读:
golang how to print struct value with pointer
我有以下结构和函数:
type RayTrace struct {
gorm.Model
Var1 float64 `json:"var1"`
Var2 float64 `json:"var2"`
Var3 float64 `json:"var3"`
UserID uint `json:"user_id"`
}
...
// GetRaytracesFor function
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
}
return raytraces
}
如何 get/print 从数据库调用返回的数据?
谢谢!
我假设你问的是如何打印指针切片的值,而不是地址。在这种情况下,使用 fmt.Println(raytraces)
或 fmt.Printf("%v", raytraces) // or %+v or %#v
将 return 地址。
您可能希望看到类似的问题 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
}
更多阅读:
golang how to print struct value with pointer