«go-reflect» etiketlenmiş sorular

14
Go'da bir nesnenin türü nasıl bulunur?
Go'da bir nesnenin türünü nasıl bulurum? Python, sadece typeofnesne türünü almak için kullanın . Go'da da benzer şekilde, bunu uygulamanın bir yolu var mı? İşte ben yineleme kabı: for e := dlist.Front(); e != nil; e = e.Next() { lines := e.Value fmt.Printf(reflect.TypeOf(lines)) } Dizeleri bir dizi olan bu durumda …
387 go  go-reflect 


6
Arabirim arabirimlerini dönüştürme dilimleri yazın
Git does't örtük dönüştürme neden merak ediyorum []Tiçin []interface{}dolaylı dönüştürür zaman Tiçin interface{}. Kaçırdığım bu dönüşümle ilgili önemsiz olmayan bir şey var mı? Misal: func foo([]interface{}) { /* do something */ } func main() { var a []string = []string{"hello", "world"} foo(a) } go build şikayet işlev bağımsız değişkeninde tür …

5
İki yapı, dilim veya harita eşitse nasıl karşılaştırılır?
İki yapının, dilimlerin ve haritaların eşit olup olmadığını kontrol etmek istiyorum. Ancak aşağıdaki kodla ilgili sorunlarla karşılaşıyorum. Yorumlarımı ilgili satırlarda görün. package main import ( "fmt" "reflect" ) type T struct { X int Y string Z []int M map[string]int } func main() { t1 := T{ X: 1, Y: …
132 go  go-reflect 

3
Go'da bir yapının alanları arasında yineleme
Temel olarak, a'nın alanlarının değerlerini yinelemenin (bildiğim) tek yolu structşudur: type Example struct { a_number uint32 a_string string } //... r := &Example{(2 << 31) - 1, "...."}: for _, d:= range []interface{}{ r.a_number, r.a_string, } { //do something with the d } Merak ediyordum, başarmanın daha iyi ve daha …
108 go  go-reflect 


2
Go'da bir işlevin adı nasıl alınır?
Bir işlev verildiğinde, adını almak mümkün mü? Söyle: func foo() { } func GetFunctionName(i interface{}) string { // ... } func main() { // Will print "name: foo" fmt.Println("name:", GetFunctionName(foo)) } Runtime.FuncForPC'nin yardımcı olacağı söylendi , ancak nasıl kullanılacağını anlayamadım.

3
bir dilim depolayan arayüz üzerinden {} aralığı
Kabul eden bir işleve sahip olduğunuz senaryo göz önüne alındığında t interface{}. tBir dilim olduğu belirlenirse, o dilimi nasıl rangeaşarım? func main() { data := []string{"one","two","three"} test(data) moredata := []int{1,2,3} test(data) } func test(t interface{}) { switch reflect.TypeOf(t).Kind() { case reflect.Slice: // how do I iterate here? for _,value := …
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.