从类型断言的接口切片中删除元素
在 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中文网其他相关文章!