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

为什么我的go函数参数在调用函数之前和函数内部具有不同的大小?,go,Go,作为让Golang试一试的一部分,我最终遇到了路障,所以我是个新手 我已经编写了一个快速玩具程序来搜索字符串列表中的模式,我想同时执行 我写了一个search(data*[]string,input_string*string,channel chan问题是search需要一个*[]string。将其更改为[]string可以修复它 沃尔克表示这是一个“也”,但这是修复方法 正如hmm所指出的,这可能与 运行go vet wiki.go并没有警告这个问题。您的示例还不够完整,无法确定,但您可能需

作为让Golang试一试的一部分,我最终遇到了路障,所以我是个新手

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


我写了一个
search(data*[]string,input_string*string,channel chan问题是
search
需要一个
*[]string
。将其更改为
[]string
可以修复它

沃尔克表示这是一个“也”,但这是修复方法

正如hmm所指出的,这可能与


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

您的示例还不够完整,无法确定,但您可能需要阅读See ALLOW。您所说的“大小”是什么意思?您在哪里以及如何检查变量大小?另外:不要执行
*[]string
传递一个指针,因此在函数不需要修改切片本身(甚至在本例中返回)的所有情况下,切片都是错误的,切片会更好)。
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...)
}