我正在玩谷歌的Go语言,我遇到了一些在C语言中相当基本的东西,但是到目前为止我看到的文档似乎没有涉及
当我将一个指向一个切片的指针传递给一个函数时,我假设我们有一些方法可以访问它,如下所示:
func conv(x []int, xlen int, h []int, hlen int, y *[]int)
for i := 0; i<xlen; i++ {
for j := 0; j<hlen; j++ {
*y[i+j] += x[i]*h[j]
}
}
}
Run Code Online (Sandbox Code Playgroud)
但Go编译器不喜欢这样:
sean@spray:~/dev$ 8g broke.go
broke.go:8: invalid operation: y[i + j] (index of type *[]int)
Run Code Online (Sandbox Code Playgroud)
足够公平 - 这只是猜测.我有一个相当简单的解决方法:
func conv(x []int, xlen int, h []int, hlen int, y_ *[]int) {
y := *y_
for i := 0; i<xlen; i++ {
for j := 0; j<hlen; j++ {
y[i+j] …Run Code Online (Sandbox Code Playgroud)