小编jcq*_*a88的帖子

如何在未知类型的地图上编写函数?

我感兴趣地阅读了一个关于如何在 Go 中创建映射键切片(使用范围循环)的问题,但是如何编写一个函数来为任何类型的映射执行此操作?映射值类型是一个特别麻烦的问题,因为它甚至不会影响结果切片的类型。

\n

例如,我可以编写一个函数,将 map[int]T (其中 T 是任何类型)作为参数并返回 map\xe2\x80\x99s 键的 []int (整数切片)吗?如果\xe2\x80\x99s可能的话,是否可以使函数在map[T1]T2(其中T1和T2是任何类型)上运行并返回[]T1切片?也就是说,我该如何替换下面代码中的问号?我\xe2\x80\x99m猜测我需要一个接口,但我\xe2\x80\x99m对这些接口有点初学者。

\n
    func keys(m map[?]?) []? {\n       var s []?\n       k := range m {\n          s = append(s, k)\n       }\n       return s\n    }\n
Run Code Online (Sandbox Code Playgroud)\n

types go

-2
推荐指数
1
解决办法
1329
查看次数

标签 统计

go ×1

types ×1