douyang2530
2016-07-22 11:57
浏览 86
已采纳

在Go中,如何使用切片创建通用函数?

Let's say I want to write a function that finds a value in a slice

I intuitively want to write:

func find(s []interface{}, f func(interface{})bool) int {
    for i, item := range s {
        if f(item) {
            return i
        }
    }
    return -1
}

however I don't manage to do this with Go. I could have an interface with

Len() int
Value(int) interface{}
...

and this would work but in my real code things are more complicated (I need to do slices[from:end] etc), append, ... etc and if I redefine all this in an interface I end up having a lot of code. Is there a better way?

图片转代码服务由CSDN问答提供 功能建议

假设我要编写一个在切片中查找值的函数 < p>我直观地想写:

  func find(s [] interface {},f func(interface {})bool)int {
 for i,item:  = range s {
如果f(item){
返回i 
} 
} 
返回-1 
} 
   
 
 

但是我不这样做 Go无法做到这一点。 我可以使用

  Len()int 
Value(int)接口{} 
 ... 
   
 \  n 

这可以工作,但是在我的真实代码中,事情变得更加复杂(我需要进行slice [from:end]等),追加,...等,如果我在接口中重新定义了所有这些,我最终将拥有 很多代码。 有更好的方法吗?

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

3条回答 默认 最新