gpt4 book ai didi

go - 为什么我的 go 函数参数在调用函数之前和函数内部具有不同的大小?

转载 作者:行者123 更新时间:2023-12-01 22:44:18 24 4
gpt4 key购买 nike

作为试用 Golang 的测试的一部分,我最终遇到了障碍,所以我是新手。

我编写了一个快速玩具程序来搜索字符串列表中的模式,我想同时进行。

我写了一个 search(data *[]string, input_string *string, channel chan<- []string)函数,取一个 channel 发回过滤后的 data其结果。

然而,data在我将它传递给函数之前,它似乎有不同的大小,在函数内部:inside search ,它的尺寸非常小,而且不正确。

完整代码在那里:https://gitlab.com/jiehong/kata_test_language/-/blob/master/wiki.go#L39 ,所以你可以测试它。

基本上,我启动了一个 go 例程列表,并一个接一个地从它们自己的 channel 中检索它们的结果:

var channels [](chan []string)
for _, chunk := range chunks {
channel := make(chan []string, 1)
channels = append(channels, channel)

go search(&chunk, &input_string, channel)
}
var filtered_data []string
for _, channel := range channels {
part_filtered := <-channel
filtered_data = append(filtered_data, part_filtered...)
}

但是 chunk ,虽然在循环内有效,但在 search 时似乎为空正在处理它。

我在这里做错了什么?

最佳答案

问题是search需要一个 *[]string .将其更改为 []string修复它。

这被 Volker 表示为“也”,但这是修复。

这可能链接到 https://github.com/golang/go/wiki/CommonMistakes#using-goroutines-on-loop-iterator-variables ,正如嗯所指出的那样。

运行 go vet wiki.go虽然没有警告这个问题。

关于go - 为什么我的 go 函数参数在调用函数之前和函数内部具有不同的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62391832/

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