Pertanyaan yang diberi tag «go-reflect»

14
Bagaimana cara menemukan jenis objek di Go?
Bagaimana cara menemukan jenis objek di Go? Dalam Python, saya hanya menggunakan typeofuntuk mengambil jenis objek. Demikian pula dalam Go, apakah ada cara untuk menerapkan hal yang sama? Ini adalah wadah tempat saya melakukan iterasi: for e := dlist.Front(); e != nil; e = e.Next() { lines := e.Value fmt.Printf(reflect.TypeOf(lines)) …
387 go  go-reflect 


6
Ketik irisan antarmuka yang dikonversi
Saya ingin tahu mengapa Go tidak secara implisit dikonversi []Tke []interface{}ketika secara implisit dikonversi Tke interface{}. Apakah ada sesuatu yang tidak sepele tentang konversi ini yang saya lewatkan? Contoh: func foo([]interface{}) { /* do something */ } func main() { var a []string = []string{"hello", "world"} foo(a) } go build …


3
Iterasi melalui bidang struct di Go
Pada dasarnya, satu-satunya cara (yang saya ketahui) untuk melakukan iterasi melalui nilai bidang a structadalah seperti ini: 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 } …
107 go  go-reflect 


2
Bagaimana cara mendapatkan nama suatu fungsi di Go?
Diberikan sebuah fungsi, apakah mungkin untuk mendapatkan namanya? Mengatakan: func foo() { } func GetFunctionName(i interface{}) string { // ... } func main() { // Will print "name: foo" fmt.Println("name:", GetFunctionName(foo)) } Saya diberi tahu bahwa runtime.FuncForPC akan membantu, tetapi saya gagal memahami cara menggunakannya.

3
rentang di atas antarmuka {} yang menyimpan sepotong
Mengingat skenario di mana Anda memiliki fungsi yang menerima t interface{}. Jika ditentukan bahwa tadalah irisan, bagaimana cara rangemengatasinya? 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 := range …
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.