Mengapakah Go Memerlukan Tugasan Eksplisit untuk Pulangan Berbilang Nilai?

Mary-Kate Olsen
Lepaskan: 2024-11-06 18:24:03
asal
203 orang telah melayarinya

Why Does Go Require Explicit Assignment for Multi-Value Returns?

Isu Pulangan Berbilang Nilai Go

Dalam Go, mengembalikan berbilang nilai daripada fungsi ialah amalan biasa, tetapi had sintaks tertentu boleh timbul . Mari kita terokai sebab coretan kod berikut berkelakuan berbeza:

Kod Sah:

func FindUserInfo(id string) (Info, bool) {
    it, present := all[id]
    return it, present
}
Salin selepas log masuk

Kod Tidak Sah:

func FindUserInfo(id string) (Info, bool) {
    return all[id]
}
Salin selepas log masuk

Sebab Sintaks Tidak Sah:

Coretan kod kedua cuba mengembalikan dua nilai terus daripada carian peta semua[id]. Walau bagaimanapun, Go memerlukan penugasan eksplisit berbilang nilai pulangan.

Corak "Comma Ok":

Corak "Comma Ok" ialah mekanisme untuk mengekstrak nilai dan penunjuk boolean (biasanya dinamakan ok) daripada mengakses kunci peta. Corak ini disokong untuk peta, saluran dan penegasan jenis.

Dalam kes anda, ia ialah nilai yang diperoleh semula dan hadir ialah boolean yang menunjukkan sama ada kunci itu wujud dalam peta. Tugasan dengan pemisahan koma it, present := all[id] secara tersirat menggunakan corak ini.

Memahami Kaedah Unpack:

Secara dalaman, Go menggunakan kaedah unpack untuk mengendalikan tugasan berbilang nilai. Kaedah ini menentukan sama ada tugasan ialah huruf "koma ok" berdasarkan mod operan (cth., pengindeksan peta, nilai saluran, penegasan jenis).

Secara lalai, kaedah unpack hanya membenarkan penetapan koma ok semasa melakukan tugasan dengan dua pembolehubah di sebelah kiri. Sekatan ini ditetapkan dalam kaedah Checker.initVars().

Kesimpulan:

Corak "koma ok" dalam Go membolehkan mendapatkan semula berbilang nilai daripada peta, saluran, dan jenis penegasan. Walau bagaimanapun, penetapan nilai pulangan yang eksplisit diperlukan dan pengkompil mengehadkan penetapan koma ok kepada senario di mana dua pembolehubah hadir di sebelah kiri.

Atas ialah kandungan terperinci Mengapakah Go Memerlukan Tugasan Eksplisit untuk Pulangan Berbilang Nilai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!