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 }
kerana pernyataan if
(serta for
dan switch
) ialah Blok tersirat, mengikut spesifikasi bahasa, :=
digunakan untuk pengisytiharan dan tugasan. Jika anda mahu if
语句(以及 for
和 switch
)是隐式块,根据语言规范,:=
用于声明和赋值。如果您希望 str
在 if
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!