我试图创建一个可以重置通过切片这样的功能:如何用Golang中的反射包去除切片中的所有元素?

func resetSlice(slice interface{}) { 
    v := reflect.ValueOf(slice) 
    s := v.Type().Elem() 
    // QUESTION: How to reset the slice here? 
} 

usernames := []string{"Hello", "World"} 
resetSlice(&usernames) 

fmt.Println(usernames) // OUTPUT : [Hello World] 
         // EXPECTED: [] 

但我不知道如何重置指针片的想法。也许创建一个与指针切片类型相同的新切片

reflect.New(v.Type().Elem()) 

然后替换指针切片?但是如何?

2017-07-03 Yami Odymel