我正在尝试使用我在网络上找到的带有一串字符串的集合库。该集合意味着能够采用泛型类型,但是当我尝试传入一段字符串时,我得到:
不能在mapset.NewSetFromSlice的参数中使用group_users(type [] string)作为类型[] interface {}
有没有办法使用该函数而不创建一个新的切片,其元素是类型interface {}?
可在此处找到集合库:
我知道这可能很简单,我做错了但我似乎无法找到答案
答案 0 :(得分:1)
有没有办法在不创建元素类型为
interface{}
的新切片的情况下使用该函数?
不是真的:您可能需要将您的字符串切片转换为接口切片,如“InterfaceSlice”中所述(这就是为什么您不能直接从[]Type
转到{ {1}}):
[]interface{}
考虑how an interface{}
is structured,您无法快速将一个切片转换为另一个切片。
这是FAQ。
答案 1 :(得分:0)
VonC是正确的,但如果你真的只想要一个字符串切片,那么实现起来相当简单
的简单版本基本思路是制作一个Type - >的地图。 bool(或者我认为空结构会更节省空间,但bool更容易使用/类型)
关键部分是:
type StringSet map[string]bool
func (s StringSet) Add(val string) {
s[val] = true
}
然后,检查存在可以像s [" key"]一样简单,因为如果它存在则返回bool true,如果不存在则返回false(由于false是bool的默认值)