When passing Go slices through interface{}
values, beware that this slows your application down. If possible, you should instead be passing around pointers to slices, and dereference them after the cast:
$ go test -c
$ ./x.test -test.bench . -test.run Benchmark -test.benchtime 3s
BenchmarkInterfaceSlice 30000000 148 ns/op
BenchmarkInterfaceSlicePtr 300000000 14.0 ns/op
$ go tool pprof -text -cum x.test slice.out | grep -vE 'testing|goexit|Benchmark'
4420ms of 4610ms total (95.88%)
Dropped 16 nodes (cum <= 23.05ms)