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

Mengapakah `jika` mengubah skop pembolehubah ini?

WBOY
WBOYke hadapan
2024-02-05 23:57:11431semak imbas

为什么 `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

Kes 2:

str, err := m.something(); 

fmt.println(str)  //str is ok

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
    }

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
// ...

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

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam