gpt4 book ai didi

arrays - 将 slice 作为引用传递以反射(reflect)调用者的变化

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

<分区>

main 声明了一个名称为 allOutputs 的 slice (我相信它是一个字符串 slice ,而不是一个字符串数组),长度为零,容量为 100。然后它 append 一个值为“abcd”的字符串并调用 myTest 函数,该函数用“1234”更新数组[0],然后 append 值为“5678”。

当我在 myTest 调用后打印 allOutputs 时,我正确地看到第一个索引处的元素具有更新值“1234”。这告诉我 myTest 得到了 slice 作为引用。但是 "5678" 后面的 append 根本没有被调用者(这里是 main)看到,为什么会这样呢?请记住,原始 slice 由容量为 100 的数组支持。当 slice 通过引用传递时,为什么我在 main 中看不到 5678?

换句话说,追加究竟是如何工作的?

import "fmt"

func myTest(array []string) {
array[0] = "1234"
array = append(array, "5678")
}

func main() {
allOutputs := make([]string, 0, 100)
allOutputs = append(allOutput, "abcd")
fmt.Println(allOutputs) // Println1
myTest(allOutputs)
fmt.Println(allOutputs) // Println2
}

实际输出:[1234]

我预计:[1234, 5678]

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