假设我有这个结构
type Rectangle struct {
    height string
    width  string
}我有一个测试变量,它看上去就像这样
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()
}最后,我得到了这个输出
我想打印的是另一个变量地址和值
发布于 2022-04-11 06:21:39
不知道这是不是你想要的。但是,按照操场代码的链接,可以使用非内置库打印结构指针数组的内容。
https://go.dev/play/p/tcfJYb0NnVf
您可能需要参考库来了解如何打印内容或只使用库本身。
发布于 2022-04-14 01:17:15
问题是,您的切片是指向矩形的指针片,所以当它被打印出来时,它会打印出值,但是这些值是指针。
您可以尝试这样的方法来打印出以下值:
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("}")
}https://stackoverflow.com/questions/71822797
复制相似问题