Pulang daripada Fungsi Anak dalam Fungsi Ibu Bapa
Seseorang mungkin menghadapi situasi di mana mereka ingin kembali dari fungsi ibu bapa apabila memanggil fungsi kanak-kanak. Dalam senario ini, matlamatnya adalah untuk menamatkan pelaksanaan dalam fungsi induk apiEndpoint() apabila syarat tertentu dipenuhi dalam fungsi anak apiResponse().
Isunya
Menggunakan coretan kod yang disediakan:
func apiEndpoint() { if false { apiResponse("error") // Return execution in parent function // Skip execution of apiResponse("all good") } apiResponse("all good") } func apiResponse(message string) { // Returns message to user via JSON }
Niatnya adalah untuk meminta apiResponse("error") menamatkan pelaksanaan apiEndpoint() supaya apiResponse("all good") tidak dilaksanakan. Walau bagaimanapun, tingkah laku lalai dalam Go ialah fungsi tidak boleh mengawal aliran pelaksanaan di luar skopnya.
Resolusi
Untuk mencapai hasil yang diingini, terdapat beberapa pendekatan:
1. Gunakan Penyata if-Else
Jika syaratnya cukup mudah, struktur if-else boleh digunakan untuk mengelakkan pernyataan pulangan yang jelas:
func apiEndpoint() { if someCondition { apiResponse("error") } else { apiResponse("all good") } }
2. Kembali daripada Pemanggil Menggunakan Nilai
Jika kedua-dua fungsi mengembalikan nilai, anda boleh menggunakan satu baris kod untuk mengembalikan nilai yang sesuai daripada fungsi pemanggil:
func apiEndpoint() int { if someCondition { return apiResponse("error") } return apiResponse("all good") } func apiResponse(message string) int { return 1 // Return an int }
Nota
Walaupun panik merupakan satu lagi pengecualian yang boleh menghentikan pelaksanaan, ia tidak dianggap sebagai penyelesaian yang sesuai dalam konteks ini dan harus dikhaskan untuk situasi luar biasa.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Kembali daripada Fungsi Ibu Bapa dalam Go Selepas Fungsi Anak Dilaksanakan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!