Go:迭代指向切片的指標
使用 Go 切片時,了解指針和切片如何交互非常重要。提供的程式碼會拋出“無法遍歷指向切片的指標”錯誤,因為它嘗試迭代指向切片的指標而不取消引用它。
切片是一種指向陣列的靈活資料結構。雖然它與指針有一些相似之處,但不同之處在於切片已經封裝了指向底層數組的指針。因此,創建指向切片的指標沒有任何意義,並且可能會導致混亂。
在程式碼片段中,錯誤發生在 populateClassRelationships 函數中,特別是在以下行:
for i := range classes {
classes := new([]entities.Class)
不使用指向切片(*[]entities.Class)的指針,正確的方法是傳遞切片本身,如修改後的code:
func (c *ClassRepository) ClassesForLastNDays(days int) []entities.Class { classes := new([]entities.Class)
透過以這種方式修改程式碼,Go會自動取消引用切片並允許正確的迭代。有關切片和指針的更多信息,請參閱 Go 官方文檔。
以上是為什麼 Go 會拋出「無法超出切片指標範圍」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!