在Go中,使用reflect.MakeSlice建立切片會傳回一個不可尋址的值。當需要切片位址時,這會成為一個問題,如以下程式碼片段所示:
要解決此問題,有兩種方法解決方案:
1.使用reflect.New()
最簡單的解決方案是使用reflect.New() 建立一個指標。例如:
2。使用類型化映射
或者,您可以使用類型化映射來建立所需類型的切片:
本地堆疊變量,包括由reflect.MakeSlice建立的變量,在Go中是不可尋址的。這確保了指向這些變數的指標保持有意義,並且不會指向無效的記憶體位置。
mgo API 需要一個指向切片的指標作為其 iter .All 函數,因為附加到切片可能會重新分配記憶體。為了將這些變更傳達給呼叫者,需要一個指標。
以上是為什麼 `reflect.MakeSlice` 在 Go 中傳回不可尋址的值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!