Rumah >pembangunan bahagian belakang >Golang >Bolehkah Go Channels Mengendalikan Pelbagai Jenis Data?
Taip Saluran Agnostik dalam Go
Soalan:
Dalam Go, adakah mungkin untuk menghantar berbilang jenis data melalui satu saluran?
Contoh:
Kod berikut cuba menghantar jenis yang berbeza melalui saluran: http://play.golang. org/p/7p2Bd6b0QT.
Jawapan:
Ya, adalah mungkin untuk mencipta saluran agnostik jenis dalam Go. Untuk menghantar berbilang jenis melalui saluran, gunakan:
greet := make(chan pet)
Dengan pengubahsuaian ini, anda boleh menghantar sebarang jenis yang melaksanakan antara muka haiwan kesayangan.
Menghantar Data Generik:
Jika anda perlu menghantar data generik sepenuhnya, cipta saluran antara muka jenis chan{} dan gunakan refleksi untuk menentukan jenis data yang diterima.
Contoh:
ch := make(chan interface{}) go func() { select { case p := <-ch: fmt.Printf("Received a %q", reflect.TypeOf(p).Name()) } }() ch <- "this is it"
Menggunakan Suis Jenis:
Sebagai alternatif kepada refleksi, anda boleh menggunakan suis jenis dengan pernyataan pilih seperti ini:
p := <-ch switch p := p.(type) { case string: fmt.Printf("Got a string %q", p) default: fmt.Printf("Type of p is %T. Value %v", p, p) }
Atas ialah kandungan terperinci Bolehkah Go Channels Mengendalikan Pelbagai Jenis Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!