Rumah >pembangunan bahagian belakang >Golang >Bolehkah Go Channels Mengendalikan Pelbagai Jenis Data?

Bolehkah Go Channels Mengendalikan Pelbagai Jenis Data?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-03 13:55:30256semak imbas

Can Go Channels Handle Multiple Data Types?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn