提问人:aesy 提问时间:4/11/2022 最后编辑:Adam Nierzadaesy 更新时间:4/14/2022 访问量:94
将指针切片追加到另一个指针切片 Go
Append slice of pointer into another slice of pointer Go
问:
假设我有这个结构
type Rectangle struct {
height string
width string
}
我有一个测试变量,看起来完全是这样的
testvar := []*Rectangle{
{
height: "100",
width: "100",
},
{
height: "200",
width: "200",
},
}
我在这里尝试做的是将这个测试变量附加到另一个 []*Rectangle 中,并循环使用
anothervar:= []*Rectangle{}
for _, ptr := range testvar {
fmt.Printf("%v\n", ptr)
anothervar = append(anothervar, ptr)
fmt.Printf("%p %v \n", anothervar, anothervar)
fmt.Println()
}
最后,我得到了这个输出
我想打印的是另一个var地址和值
答:
0赞
Minh
4/11/2022
#1
不确定这是你想要的。但是 Playground 代码的以下链接允许您使用非内置库打印结构指针数组的内容。
https://go.dev/play/p/tcfJYb0NnVf
您可能需要参考库以了解如何打印内容或仅使用库本身。
0赞
Toivo Lainevool
4/14/2022
#2
问题是您的切片是指向矩形的指针切片,因此当它被打印出来时,它正在打印出值,但这些值是指针。
您可以尝试如下操作来打印出值:
import (
"fmt"
)
type Rectangle struct {
height string
width string
}
func main() {
testvar := []*Rectangle{
{
height: "100",
width: "100",
},
{
height: "200",
width: "200",
},
}
anothervar:= []*Rectangle{}
for _, ptr := range testvar {
fmt.Printf("%v\n", ptr)
anothervar = append(anothervar, ptr)
fmt.Printf("%p %+v \n", anothervar, anothervar)
fmt.Println()
printRectSlice(anothervar)
}
}
func printRectSlice(s []*Rectangle) {
fmt.Printf("{")
for _, r := range s {
fmt.Printf("%v", *r)
}
fmt.Println("}")
}
评论
ptr := ptr
String() string