Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Mengakses Data Tersuai dalam Goroutines dengan Antara Muka Jenis {}?

Bagaimana untuk Mengakses Data Tersuai dalam Goroutines dengan Antara Muka Jenis {}?

Patricia Arquette
Patricia Arquetteasal
2024-11-03 20:13:03328semak imbas

How to Access Custom Data in Goroutines with Type Interface {}?

Mengakses Data Tersuai dalam Goroutine dengan Antara Muka Jenis {}

Dalam sesetengah senario, anda mungkin menghadapi situasi di mana anda perlu mengakses data yang diluluskan sebagai struct tanpa nama kepada goroutine yang menjalankan kerja berjadual menggunakan gojob. Walau bagaimanapun, mengakses medannya secara langsung mengakibatkan ralat "antara muka jenis {} ialah antara muka tanpa kaedah."

Untuk menyelesaikan isu ini, anda mesti menaip data tersuai antara muka{} secara eksplisit kepada jenis yang betul sebelum mengaksesnya padang. Begini cara anda boleh mengubah suai kod anda:

<code class="go">func NewJob(t string, name string, c func(), v interface{}) {
    ...
    jobs = append(jobs, job)
}</code>
<code class="go">func Custom(name string) interface{} {
    ...
    return jobs[i].custom
}</code>

Kini, dalam goroutine yang dijadualkan, anda boleh mengakses medan struct tanpa nama dengan menaipnya:

<code class="go">id := v.(struct{Id int}).Id</code>

Jenis eksplisit ini penegasan memastikan anda boleh mengakses medan Id tanpa menghadapi ralat "tidak ditentukan".

Atas ialah kandungan terperinci Bagaimana untuk Mengakses Data Tersuai dalam Goroutines dengan Antara Muka Jenis {}?. 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