我正在学习Go,我正在做一些反思。我陷入了这样的情况:
我想创建一个slice传递struct给函数的interface{}
然后我想将新元素附加到这个切片
这是一个带有代码示例的游乐场。
package main
import (
"fmt"
"reflect"
)
type A struct{ Name string }
func main() {
bbb(A{})
}
func aaa(v interface{}) {
sl := reflect.ValueOf(v).Elem()
typeOfT := sl.Type()
ptr := reflect.New(typeOfT).Interface()
s := reflect.ValueOf(ptr).Elem()
sl.Set(reflect.Append(sl, s))
ptr = reflect.New(typeOfT).Interface()
s = reflect.ValueOf(ptr).Elem()
sl.Set(reflect.Append(sl, s))
}
func bbb(v interface{}) {
myType := reflect.TypeOf(v)
models := reflect.Zero(reflect.SliceOf(myType)).Interface()
aaa(&models)
fmt.Println(models)
}
错误: panic: reflect: call of reflect.Append on interface Value
有没有办法让它工作?注意:我想参考。
解决方案:
这是我设法做的:操场。
蓝山帝景
侃侃尔雅
相关分类