Rumah >pembangunan bahagian belakang >Golang >Mengapa Saya Tidak Boleh Mengembalikan Berbilang Nilai Tanpa Memusnahkan dalam Go?

Mengapa Saya Tidak Boleh Mengembalikan Berbilang Nilai Tanpa Memusnahkan dalam Go?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-07 19:13:03297semak imbas

Why Can't I Return Multiple Values Without Destructuring in Go?

Mengembalikan Berbilang Nilai dalam Go: Memahami Sekatan Bernuansa

Dalam Go, mengembalikan berbilang nilai membolehkan anda mengembalikan berbilang hasil daripada satu fungsi . Walau bagaimanapun, tidak semua senario pulangan berbilang dianggap sah. Mari kita terokai kekangan dan pengecualian ketara kepada peraturan ini.

Mengapa Contoh Dua Nilai Pulangan adalah Sah

Contoh yang anda berikan:

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

sah sebab ikut corak "koma ok". Idiom ini digunakan secara khusus apabila mengakses kunci peta:

mapValue, ok := map[key]

Untuk mendapatkan kedua-dua nilai peta dan status "ok", kita mesti menetapkannya kepada pembolehubah. Pengkompil memahami bahawa pembolehubah "ia" dan "kini" digunakan untuk memusnahkan hasil operasi pengindeksan peta.

Mengapa Contoh Nilai Pulangan Satu Tidak Sah

Sebaliknya, contoh berikut:

func FindUserInfo(id string) (Info, bool) {
    return all[id]
}

tidak sah kerana ia tidak merosakkan pengindeksan peta operasi. Ini akan membawa kepada satu nilai pulangan, yang tidak serasi dengan jenis pulangan yang ditentukan bagi fungsi tersebut.

Mengelakkan Pembolehubah Sementara Tidak Mungkin

Pada masa ini tidak mungkin untuk mengelakkan pembolehubah sementara dalam senario khusus ini. Simpulan bahasa "koma ok" memerlukan penetapan eksplisit nilai yang dimusnahkan kepada pembolehubah.

Kesimpulan

Memahami nuansa berbilang nilai pulangan dalam Go adalah penting. Walaupun corak "koma ok" membenarkan berbilang nilai pulangan, ia terhad kepada pengindeksan peta, pengambilan saluran dan penegasan jenis. Akibatnya, dalam kes anda, pembolehubah sementara diperlukan apabila mengembalikan kedua-dua nilai dan status "ok" daripada operasi pengindeksan peta.

Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Mengembalikan Berbilang Nilai Tanpa Memusnahkan dalam Go?. 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