code: func addressableSlice(slice interface{}) reflect.Value {
  	v := reflect.ValueOf(slice)
  	p := reflect.New(v.Type())
  	p.Elem().Set(v)
  	return p.Elem()
  }
docs: // Creates a modifiable copy of a slice reference. Because you can't modify
  // non-pointer types inside an interface{}.