Rumah > pembangunan bahagian belakang > Golang > Mengapakah `jika` mengubah skop pembolehubah ini?

Mengapakah `jika` mengubah skop pembolehubah ini?

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Lepaskan: 2024-02-05 23:57:11
ke hadapan
499 orang telah melayarinya

为什么 `if` 改变了这个变量的范围

Isi soalan

Jika saya mempunyai perkara seperti ini

Kes 1:

if str, err := m.something(); err != nil {
        return err
    }

fmt.println(str)  //str is undefined variable
Salin selepas log masuk

Kes 2:

str, err := m.something(); 

fmt.println(str)  //str is ok
Salin selepas log masuk

Soalan saya ialah mengapa skop pembolehubah str berubah apabila digunakan dalam format ini

if str, err := m.something(); err != nil {
        return err
        //str scope ends
    }
Salin selepas log masuk


Jawapan yang betul


kerana pernyataan if (serta for dan switch) ialah Blok tersirat, mengikut spesifikasi bahasa, := digunakan untuk pengisytiharan dan tugasan. Jika anda mahu if 语句(以及 forswitch)是隐式块,根据语言规范,:= 用于声明和赋值。如果您希望 strif tersedia selepas if, anda boleh mengisytiharkan pembolehubah dahulu dan kemudian memberikannya nilai dalam pernyataan if:

var s string
var err error

if str, err = m.something(); err != nil
// ...
Salin selepas log masuk

Atas ialah kandungan terperinci Mengapakah `jika` mengubah skop pembolehubah ini?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan