Merhaba, Go
'u öğreniyorum ve biraz yansıyordum. Böyle bir durumda saplanıp:Dilim yansımasına öğelerini nasıl ekleyebilirim?
- Ben
struct
birslice
Bu dilim İşte
için yeni unsurlar eklemek istiyorum Sonra
interface{}
olarak işlev geçirilen oluşturmak istediğiniz bir olduğunu Kod örneği ile playground. 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)
}
Hata:panic: reflect: call of reflect.Append on interface Value
çalışması için bir yol var mı? Not: Referans üzerinde çalışmak istiyorum.
Çözüm: İşte
i yapmak yönetmek budur: playground.
Olası çiftleri: http://stackoverflow.com/questions/34600817/pointer-to-interface-with-saving-type/34600906 ve http://stackoverflow.com/questions/37713749/unmarshal -into-dizi-of-struct-in-runtime-in-go/37713982 – JimB