【发布时间】:2018-06-15 14:25:10
【问题描述】:
我对 passign slice 的功能有些困惑。这是我读到的:
以下是我的理解: slice 是一个带有指向真实数据的指针的结构;当我们将切片传递给函数时,我们只是复制一个指针,但该函数正在使用与原始函数相同的数据。
这是我的代码:
type Example struct {
A int
B string
}
func foo(d []Example) {
for _, e := range d {
e.B = "bye"
}
}
func main() {
a := Example{}
a.A = 10
a.B = "hello"
b := Example{}
b.A = 10
b.B = "hello"
var c []Example
c = append(c, a)
c = append(c, b)
foo(c)
for _, e := range c {
fmt.Println(e.B)
}
}
我已将结构切片传递给函数并更改了函数中的结构。为什么我在 main 函数中有旧值?
【问题讨论】:
标签: go