由于某些原因,使用反射向切片中添加新元素似乎不会更新切片本身。以下是演示代码:
package main
import (
"fmt"
"reflect"
)
func appendToSlice(arrPtr interface{}) {
valuePtr := reflect.ValueOf(arrPtr)
value := valuePtr.Elem()
value = reflect.Append(value, reflect.ValueOf(55))
fmt.Println(value.Len()) // prints 1
}
func main() {
arr := []int{}
appendToSlice(&arr)
fmt.Println(len(arr)) // prints 0
}
实验室链接:https://play.golang.org/p/j3532H_mUL
这里有什么我忽略的东西吗?