Go - 如何复制界面切片?

时间:2016-05-28 01:06:45

标签: go interface slice mergesort

我正在尝试使用辅助数组实现简单的合并排序。我有type byString []string来实现Less, Swap, and Len方法。它基本上遵循Go的sort包的界面。

但是,我在选择将byString切片复制到临时数组的最佳路径时遇到了一些困难。

请帮助我打破Java的多态性世界,使其与Go一起使用。

func merge(data Interface, lo, mid, hi int) {
  i, j := lo, mid+1

  // How do I copy data's elements to a new slice called aux?
}

1 个答案:

答案 0 :(得分:0)

使用内置的copy函数,您只需要将新切片声明为接口类型:

type Interface []string

func merge(data Interface, lo, mid, hi int) {
    i, j := lo, mid+1
    var aux Interface = make([]string, len(data), len(data))
    copy(aux, data)
}