在介面內尋址值
為了理解為什麼取得儲存在介面中的值的位址是不可行的,這一點至關重要深入研究介面變數的本質。本質上,介面值由兩個部分組成:
需要注意的兩個關鍵面向:
考慮以下程式碼片段:
<code class="go">var v interface{} v = int(42) p := GetPointerToInterfaceValue(&v) // a pointer to an integer holding 42 v = &SomeStruct{...}</code>
在這種情況下,先前保存整數的儲存被重新用於儲存指標。因此,取消引用 *p 現在會產生指標的數字表示形式。
為了防止損害類型系統,Go 有意限制這種類型的指標檢索(除了不安全的套件使用之外)。
替代解決方案
如果您的要求是存取儲存在清單中的結構體指針,請考慮以下替代方案:
以上是為什麼無法取得 Go 介面中儲存的值的位址?的詳細內容。更多資訊請關注PHP中文網其他相關文章!