Dalam pengaturcaraan, fungsi selalunya diperlukan untuk menamatkan pelaksanaan fungsi induknya. Ini boleh dicapai melalui pelbagai kaedah, bergantung pada bahasa pengaturcaraan dan keperluan khusus atur cara.
Salah satu kaedah tersebut ialah menggunakan penyata pulangan dalam fungsi subordinat. Apabila fungsi menemui penyataan pemulangan, ia segera keluar dari fungsi dan mengembalikan kawalan kepada fungsi panggilan.
Dalam contoh kod yang disediakan:
func apiEndpoint() { if false { apiResponse("error") // I want apiResponse() call to return (end execution) in parent func // so next apiResponse("all good") wont be executed } apiResponse("all good") } func apiResponse(message string) { // returns message to user via JSON }
Niatnya adalah untuk menamatkan pelaksanaan dalam fungsi induk apiEndpoint() apabila memanggil fungsi subordinat apiResponse(). Walau bagaimanapun, dalam Go, fungsi tidak boleh mengawal secara langsung aliran pelaksanaan pemanggilnya. Pemanggil bertanggungjawab untuk menamatkan pelaksanaan.
Satu penyelesaian kepada isu ini ialah menggunakan pernyataan if-else dalam fungsi induk:
func apiEndpoint() { if someCondition { apiResponse("error") } else { apiResponse("all good") } }
Dalam contoh ini, apiResponse("error" ) akan dilaksanakan hanya jika someCondition adalah benar. Jika tidak, apiResponse("semua baik") akan dilaksanakan.
Penyelesaian lain ialah menggunakan pernyataan pulangan dalam fungsi induk:
func apiEndpoint() int { if someCondition { return apiResponse("error") } return apiResponse("all good") } func apiResponse(message string) int { return 1 // Return an int }
Dalam contoh ini, fungsi apiEndpoint() mengembalikan nilai fungsi apiResponse(). Jika someCondition adalah benar, fungsi apiEndpoint() mengembalikan mesej ralat. Jika tidak, ia mengembalikan mesej kejayaan.
Adalah penting untuk ambil perhatian bahawa, secara umum, fungsi tidak dapat mengawal pelaksanaan pemanggilnya. Mereka hanya boleh mengembalikan nilai atau menimbulkan pengecualian, yang kemudiannya dikendalikan oleh pemanggil.
Atas ialah kandungan terperinci Bagaimanakah Fungsi Bawahan Boleh Mempengaruhi Aliran Pelaksanaan Fungsi Induknya dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!