在Go 中使用指向陣列的指標:探索替代方案
在Google 的Go 語言中,使用陣列有時會帶來挑戰,特別是在嘗試時在函數中傳遞指標給它們。本問題探討了嘗試使用指標存取函數內的陣列切片時遇到的特定問題。
最初的假設是將指標傳遞給陣列切片將允許直接存取其元素。然而,這種方法遇到了 Go 編譯器的錯誤,引發了是否有更好的方法的問題。
經過進一步調查,發現 Go 的有效 Go 文件建議在中傳遞切片而不是指向數組的指針大多數情況下。這是因為切片是引用類型,使其能夠有效率地傳遞。
以下是如何使用基於切片的方法重寫函數:
func conv(x []int, h []int) { y := make([]int, len(x)+len(h)-1) for i := 0; i < len(x); i++ { for j := 0; j < len(h); j++ { y[i+j] += x[i] * h[j] } } }
透過選擇使用切片,問題中提到的解決方法變得不必要。此外,這種方法符合 Go 建議的有效將陣列和切片傳遞給函數的做法。
以上是在 Go 中傳遞數組時為什麼使用切片而不是指標?的詳細內容。更多資訊請關注PHP中文網其他相關文章!