Si j'avais quelque chose comme ça
Cas 1 :
if str, err := m.something(); err != nil { return err } fmt.println(str) //str is undefined variable
Cas 2 :
str, err := m.something(); fmt.println(str) //str is ok
Ma question est de savoir pourquoi la portée d'une variable str
change lorsqu'elle est utilisée dans ce format
if str, err := m.something(); err != nil { return err //str scope ends }
car l'instruction if
(ainsi que for
et switch
) est Bloc implicite, selon la spécification du langage, :=
est utilisé pour la déclaration et l'affectation. Si vous souhaitez que if
语句(以及 for
和 switch
)是隐式块,根据语言规范,:=
用于声明和赋值。如果您希望 str
在 if
soit disponible après if
, vous pouvez d'abord déclarer la variable puis lui attribuer une valeur dans l'instruction if :
var s string var err error if str, err = m.something(); err != nil // ...
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!