Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Kata Kunci Tangguh Go berfungsi dalam Perintah Pelaksanaan Fungsi?

Bagaimanakah Kata Kunci Tangguh Go berfungsi dalam Perintah Pelaksanaan Fungsi?

Susan Sarandon
Lepaskan: 2024-10-29 20:32:03
asal
1055 orang telah melayarinya

How Does Go's Defer Keyword Work in Function Execution Order?

Memahami Fungsi Kata Kunci Tangguh Go

Apabila bekerja dengan Go, memahami gelagat kata kunci tangguh adalah penting. Kata kunci ini membolehkan pembangun menangguhkan pelaksanaan fungsi sehingga fungsi sekeliling kembali. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa nilai dan parameter fungsi dinilai apabila penyataan penangguhan dilaksanakan.

Contoh: Menilai Pesanan Tangguh

Untuk menggambarkan perkara ini, pertimbangkan perkara berikut kod:

<code class="go">package main

import "fmt"

func main() {
    defer having()(fun("with Go."))
    fmt.Print("some ") // evaluation order: 3
}

func having() func(string) {
    fmt.Print("Go ") // evaluation order: 1
    return funWithGo
}

func fun(msg string) string {
    fmt.Print("have ") // evaluation order: 2
    return msg
}

func funWithGo(msg string) {
    fmt.Println("fun", msg) // evaluation order: 4
}</code>
Salin selepas log masuk

Dalam contoh ini, kod dilaksanakan dalam susunan berikut:

  1. mempunyai fungsi dinilai dan mengembalikan fungsi yang mengambil rentetan sebagai input (perintah penilaian : 1)
  2. fungsi yang menyeronokkan dinilai dengan "dengan Pergi." rentetan sebagai input (perintah penilaian: 2)
  3. fmt.Print("some ") dilaksanakan (perintah penilaian: 3)
  4. menunda panggilan funWithGo fungsi dengan hasil daripada fun (perintah penilaian: 4)

Menggunakan Prinsip Tangguh

Untuk menyelesaikan isu yang disebut dalam pertanyaan asal, kami boleh menggunakan kata kunci tangguh untuk mencetak harga tiket dengan betul berdasarkan pada umur yang dimasukkan. Di bawah ialah versi kod yang diubah suai:

<code class="go">package main

import "fmt"

func main() {
    age := 999
    defer fmt.Println("Your age is:", getAge(&age)) // defer printing the age
    defer fmt.Println("Your ticket price is:", getTicketPrice(age)) // defer printing the ticket price
}

func getTicketPrice(age int) float64 {
    // Calculate ticket price based on age
    // logic can be customized here
    fmt.Println("...order is 2...")
    switch {
    case age <= 13:
        return 9.99
    case age > 13 && age < 65:
        return 19.99
    default:
        return 12.99
    }
}

func getAge(age *int) int {
    fmt.Println("...order is 1...")
    fmt.Print("Enter age=")
    fmt.Scanln(age)
    return *age
}</code>
Salin selepas log masuk

Dalam kod yang diubah suai ini, kami memanfaatkan kata kunci tangguh dengan betul untuk memastikan umur dan harga tiket dicetak selepas fungsi masing-masing telah dilaksanakan, menyelesaikan isu awal .

Atas ialah kandungan terperinci Bagaimanakah Kata Kunci Tangguh Go berfungsi dalam Perintah Pelaksanaan Fungsi?. 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