首頁 > 後端開發 > Golang > 如何從 Go 介面中儲存的切片中刪除元素?

如何從 Go 介面中儲存的切片中刪除元素?

Susan Sarandon
發布: 2024-11-16 07:49:03
原創
650 人瀏覽過

How to Delete Elements from a Slice Stored Within a Go Interface?

從類型斷言的介面切片中刪除元素

在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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板