Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Pernyataan `menangguhkan` Go Mempengaruhi Pembolehubah Diisytiharkan sebagai Parameter Input lwn Parameter Hasil Dinamakan?

Bagaimanakah Pernyataan `menangguhkan` Go Mempengaruhi Pembolehubah Diisytiharkan sebagai Parameter Input lwn Parameter Hasil Dinamakan?

Susan Sarandon
Lepaskan: 2024-11-25 20:11:12
asal
270 orang telah melayarinya

How Do Go's `defer` Statements Affect Variables Declared as Input Parameters vs. Named Result Parameters?

Tunda Gelagat untuk Pembolehubah Diisytiharkan Secara Berbeza di Golang

Fungsi dengan parameter hasil dinamakan berkelakuan berbeza apabila menggunakan penyataan tangguh berbanding dengan fungsi dengan parameter input . Dalam contoh ini, kita mengkaji perbezaan ini:

package main

import (
    "fmt"
)

func c(i int) int {
    defer func() { i++ }()
    return i
}

func c1() (i int) {
    defer func() { i++ }()
    return i
}

func c2() (i int) {
    defer func() { i++ }()
    return 2
}

func main() {
    fmt.Println(c(0)) // Prints 0
    fmt.Println(c1()) // Prints 1
    fmt.Println(c2()) // Prints 3
}
Salin selepas log masuk

c(i int):

Dalam kes ini, i ialah parameter masuk. Nilai pulangan dinilai sebelum fungsi tertunda dijalankan, jadi penambahan i selepas pulangan tidak mempunyai kesan.

c1():

Di sini, i ialah parameter hasil . Penyata pulangan i memberikan nilai i kepada nilai pulangan. Walau bagaimanapun, fungsi tertunda boleh mengubah suai pembolehubah pulangan. Dalam kes ini, fungsi tertunda bertambah i, menghasilkan nilai pulangan 1.

c2():

Serupa dengan c1(), pernyataan pulangan 2 memberikan 2 kepada i. Walau bagaimanapun, dalam kes ini, fungsi tertunda dilaksanakan selepas penyata pulangan, menghasilkan nilai pulangan sebanyak 3.

Ringkasnya, apabila bekerja dengan parameter hasil yang dinamakan dalam Go, adalah penting untuk diingat bahawa fungsi tertunda boleh mengubah suai nilai mereka walaupun selepas pernyataan pulangan. Tingkah laku ini dinyatakan secara eksplisit dalam spesifikasi Go dan boleh digunakan untuk mengubah nilai pulangan apabila perlu.

Atas ialah kandungan terperinci Bagaimanakah Pernyataan `menangguhkan` Go Mempengaruhi Pembolehubah Diisytiharkan sebagai Parameter Input lwn Parameter Hasil Dinamakan?. 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