Какое-нибудь разумное решение проблемы отсутствия ковариации массива / фрагмента в Go?

Проблема, с которой я только что столкнулся, заключается в том, что делать в следующем случае:

func printItems(header string, items []interface{}, fmtString string) {
  // ...
}

func main() {
  var iarr = []int{1, 2, 3}
  var farr = []float{1.0, 2.0, 3.0}
  printItems("Integer array:", iarr, "")
  printItems("Float array:", farr, "")
}

Go не имеет универсальных шаблонов и не позволяет использовать ковариацию коллекции:

prog.go:26: cannot use iarr (type []int) as type []interface { } in function argument      
prog.go:27: cannot use farr (type []float) as type []interface { } in function argument

Идеи?

6
задан PGene 2 August 2016 в 14:13
поделиться