スライス用に、GoのJavaScriptArray.splice
関数と同等のものを作成したいとします。私は次のコードを持っています:
func splice(slice []int, index, amount int, elements ...int) []int {
newslice := make([]int, 0)
for i := 0; i < index; i++ {
newslice = append(newslice, slice[i])
}
for i := index + amount; i < len(slice); i++ {
newslice = append(newslice, slice[i])
}
for _, el := range elements {
newslice = append(newslice, el)
}
return newslice
}
この例は機能しますが、タイプがの引数に対してのみ機能しますint
。汎用にしたいので、可変個引数の引数elements
に型interface{}
を指定する必要があることはわかっていますが、関数内からそのインターフェイスの型を使用して新しいスライスを作成するにはどうすればよいですか?
言い換えると、関数の最初の行の引数のタイプに応じて、スライスのタイプを動的に指定するにはどうすればよいですか?どこnewslice
で作成されますか?