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!