Lütfen aşağıdaki programı kontrol edin. Var z
, interface{}
tipindedir. Yapı X
yapısını depolar. Ancak, X
'un yeni bir örneğini oluşturmak için kullanamıyorum. Nesnenin türünü interface{}
değişkeninde tutmam gereken ve bu tür bir örnek oluşturmak için bunu kullanmam gereken bir gereksinim var.Git türünde yeni bir örnek oluşturmak için boş bir arabirim tarafından işaret edilen gerçek türü nasıl kullanabiliriz?
fmt.Printf("%v\n", reflect.New(z.(reflect.Type))) //----> Works!
değiştirilen örneği Go Playground tarih: İşte link for the snippet on go playground
package main
import (
"fmt"
"reflect"
)
type X struct {
a int
b int
}
type MyInt int
func main() {
x := X{}
y := reflect.TypeOf(x)
fmt.Printf("%v\n", reflect.New(y))
var z interface{}
z = y
fmt.Printf("%v\n", z) // prints main.X
//Below line throws the error
fmt.Printf("%v\n", reflect.New(z)) //----> This line throws error
}
Teşekkürler. İşe yaradı. –