gpt4 book ai didi

pointers - go - 修改指向 slice 的指针不会修改原始指针

转载 作者:数据小太阳 更新时间:2023-10-29 03:44:12 26 4
gpt4 key购买 nike

我尝试创建一个结构,其中一个字段是指向现有空 slice 的指针。然后我修改结构体的字段,稍后我尝试从原始 slice 中获取新内容 - 但它仍然是空的!

这是演示代码:

package main

import (
"fmt"
)

type A struct {
B []int
}

func main() {
c := []int{}

a := &A{
B: c,
}

a.B = append(a.B, 5)

fmt.Println(c)
fmt.Println(a)
}

这里的结果是:

[]
&{[5]}

问题是——如何从原始 slice 和结构的字段中获取实际的 slice 内容?我在这里没有将 slice 作为参数传递给函数。

最佳答案

您可以像下面的示例一样使用一片指针:

package main

import (
"fmt"
)

type A struct {
B *[]int
}

func main() {
c := []int{}

a := &A{
B: &c,
}

*a.B = append(*a.B, 4)
*a.B = append(*a.B, 5)

fmt.Println(c)

fmt.Println(a.B)
}

结果 The result is

关于pointers - go - 修改指向 slice 的指针不会修改原始指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55729216/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com