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

Mengapakah `jika` mengubah skop pembolehubah ini?

WBOY
Lepaskan: 2024-02-05 23:57:11
ke hadapan
456 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!

sumber:stackoverflow.com
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