我希望這段代碼產生 4 個地址,每個節點 2 個,因此,有 2 個相同的地址,然后是另一組 2 個相同的地址:type node struct { identifier string parent *node children []*node root int}func visitNodes(root *node) { for i := 0; i < len(root.children); i++ { fmt.Printf("Visiting node %s\n", &root.children[i]) printNodeAddress(root.children[i]) }}func printNodeAddress(node *node) { fmt.Println(&node)}func main() { root := new(node) node1 := new(node) node2 := new(node) root.children = append(root.children, node1) root.children = append(root.children, node2) visitNodes(root)}產生:Visiting node %!s(**main.node=0x10500170)0x10500180Visiting node %!s(**main.node=0x10500174)0x10500190雖然我希望它產生這樣的東西:Visiting node %!s(**main.node=0x10500170)0x10500170Visiting node %!s(**main.node=0x10500174)0x10500174我是否誤解了 go 指針的基本原理,或者在處理切片時有所不同?
理解 Go 指針
幕布斯6054654
2021-07-07 13:00:50