I'm using reflect in golang to make a new initialized slice.   But the moment I json.Marshal this new reflected slice, I get a JSON null value instead of a [].  See this example here where I compare two cases:
package main
import (
  "encoding/json"
  "reflect"
  "log"
)
func makeslice(slice interface{}) interface{} {
  return reflect.New(reflect.TypeOf(slice)).Elem().Interface()
}
func main() {
  s0 := []int{2,3,5}
  s1 := makeslice(s0).([]int)
  js1,e1 := json.Marshal(s1)
  log.Println("case 1:",reflect.TypeOf(s1),reflect.ValueOf(s1),e1,string(js1))
  s2 := []int{}
  js2,e2 := json.Marshal(s2)
  log.Println("case 2:",reflect.TypeOf(s2),reflect.ValueOf(s2),e2,string(js2))
}
This gives output of:
case 1: []int [] <nil> null
case 2: []int [] <nil> []
Notice that case 1 and case 2 produce exactly the same log output except for the final json string, where the first case shows null and the second case shows []. 
Why is this the case?  What I want is for case 1 to show [] instead because my friend's client side application is always expecting an array, and a zero length array should not be shown as a null.
What am I doing wrong?