2 回答

TA贡献1828条经验 获得超6个赞
有没有办法在不创建元素为 type 的新切片的情况下使用该函数interface{}?
并非如此:您可能需要将字符串切片转换为接口切片,如“ InterfaceSlice ”中所述(这就是为什么您不能[]Type直接从到[]interface{}):
var dataSlice []string = foo()
var interfaceSlice []interface{} = make([]interface{}, len(dataSlice))
for i, d := range dataSlice {
interfaceSlice[i] = d
}
考虑到 aninterface{}的结构,您无法快速将一个切片转换为另一个切片。
这是一个常见问题。

TA贡献1836条经验 获得超13个赞
VonC 是正确的,但如果你真的只想要一个字符串切片,实现起来相当简单
这是正在播放的StringSet的简单版本
基本思想是制作 Type -> bool 的映射(或者我认为空结构会更节省空间,但 bool 更易于使用/类型)
关键部分是:
type StringSet map[string]bool
func (s StringSet) Add(val string) {
s[val] = true
}
然后,检查是否存在可以像 s["key"] 一样简单,因为如果存在则返回 bool true,如果不存在则返回 false(因为 false 是 bool 的默认值)
- 2 回答
- 0 关注
- 203 浏览
添加回答
举报