在Go语言中为所有类型添加前置函数。

huangapple go评论88阅读模式
英文:

prepend function for all types in go

问题

我已经为Go语言编写了一个非常简单的prepend函数。

func prepend(slice []int, elms ...int) []int {
    newSlice := []int{}
    
    for _, elm := range elms {
        newSlice = append(newSlice, elm)
    }
    
    for _, item := range slice {
        newSlice = append(newSlice, item)
    }
    
    return newSlice
}

有没有办法使这个函数对任何类型都通用?

这样我就可以将一个数组的切片作为参数传递给它。

此外,有没有更好的编写这个函数的方法?

我在网上没有找到关于编写这个函数的任何信息。

英文:

I have written a very small prepend function for go.

func prepend(slice []int, elms ... int) []int {

   newSlice := []int{}

   for _, elm := range elms {
      newSlice = append(newSlice, elm)
   }

   for _, item := range slice {
      newSlice = append(newSlice, item)

   }

   return newSlice
}

Is there anyway to make the function generic for any type?

So that I can put in a slice of arrays a prepend to that.

Also, is there a better way to write this function?

I have not found anything online about writing one.

答案1

得分: 17

我不认为你可以以类型通用的方式编写这样的函数。但是你可以使用append函数来实现前置操作。

c = append([]int{b}, a...)

Playground

英文:

I don't think you can write such function in a type-generic way. But you can use append to prepend as well.

c = append([]int{b}, a...)

Playground.

答案2

得分: 1

这是一个示例代码,它定义了一个名为Prepend的函数,用于在切片的开头插入一个元素。函数的输入参数包括一个切片items和一个要插入的元素item,返回值是插入元素后的新切片。函数的实现通过使用内置函数append来实现,在切片的开头插入元素item,然后将原始切片items的所有元素追加到新切片中。

英文:

How about this:

// Prepend is complement to builtin append.
func Prepend(items []interface{}, item interface{}) []interface{} {
	return append([]interface{}{item}, items...)
}

huangapple
  • 本文由 发表于 2014年8月2日 15:45:10
  • 转载请务必保留本文链接:https://go.coder-hub.com/25092881.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定