登录
首页 >  Golang >  Go问答

如何在具有未知数据类型的地图上实现函数编写?

来源:stackoverflow

时间:2024-02-24 22:27:25 280浏览 收藏

对于一个Golang开发者来说,牢固扎实的基础是十分重要的,golang学习网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《如何在具有未知数据类型的地图上实现函数编写?》,主要介绍了,希望对大家的知识积累有所帮助,快点收藏起来吧,否则需要时就找不到了!

问题内容

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

例如,我可以编写一个函数,将 map[int]t (其中 t 是任意类型)作为参数并返回映射键的 []int (整数切片)吗?如果可能的话,是否可以让一个函数在map[t1]t2(其中t1和t2是任何类型)上进行操作并返回一个[]t1切片?也就是说,我该如何替换下面代码中的问号?我猜我需要一个界面,但我对这些界面还是个初学者。

    func keys(m map[?]?) []? {
       var s []?
       k := range m {
          s = append(s, k)
       }
       return s
    }

解决方案


可以map[int]interface{} 等类型执行此操作。

func keys(m map[int]interface{}) []int {
   var s []int
   for k := range m {
      s = append(s, k)
   }
   return s
}

要了解接口,请从 go 之旅开始:https://tour.golang.org/methods/9

但是在 go 获得泛型之前,这对于具体类型是不可能的。

不过,泛型是 on the way。一旦他们登陆 go,您将能够编写:

func keys[T any](m map[int]T) []int {
    var s []int
    for k := range m {
        s = append(s, k)
    }
    return s
}

终于介绍完啦!小伙伴们,这篇关于《如何在具有未知数据类型的地图上实现函数编写?》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>