Bagaimanakah Fungsi Bawahan Boleh Mempengaruhi Aliran Pelaksanaan Fungsi Induknya dalam Go?

Susan Sarandon
Lepaskan: 2024-11-15 19:50:03
asal
362 orang telah melayarinya

How Can a Subordinate Function Affect the Execution Flow of its Parent Function in Go?

Kembali daripada Fungsi Subordinat kepada Fungsi Induk

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
}
Salin selepas log masuk

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")
    }
}
Salin selepas log masuk

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
}
Salin selepas log masuk

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!

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