首页 > 后端开发 > Golang > 正文

如何从 Go 界面中存储的切片中删除元素?

Susan Sarandon
发布: 2024-11-16 07:49:03
原创
574 人浏览过

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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板