從類型斷言的介面切片中刪除元素
在Go 中操作封裝在介面內的切片值時,刪除元素直接從切片中獲取是不可能的。此操作會導致「無法指派給值」錯誤,因為類型斷言會建立儲存在介面中的值的副本。
將值指派給類型斷言的介面不會修改儲存在介面中的原始值介面。相反,它僅更改從類型斷言獲得的副本。若要規避此限制,請考慮在介面 (*[]interface{}) 中儲存切片指標。
指標類型允許更改指向的值而不是指標本身。這如下所示:
s := []interface{}{0, "one", "two", 3, 4} var value interface{} = &s // Perform removal by accessing the pointed slice sp := value.(*[]interface{}) i := 2 *sp = append((*sp)[:i], (*sp)[i+1:]...) fmt.Println(value)
輸出:
&[0 one 3 4]
透過型別斷言切片指標的介面([]interface{}) 並使用間接運算子(),我們可以直接修改指向的切片值。
以上是如何從 Go 介面中儲存的切片中刪除元素?的詳細內容。更多資訊請關注PHP中文網其他相關文章!