Эффект окклюзии цикла for в Go

Примечание: окклюзия не является заменой

Если в цикле for мы объявим переменную с тем же именем, что и переменная в операторе инициализации внутри тела цикла, то эта новая переменная будет «затенять» внешнюю переменную с тем же именем. Но эта окклюзия действительна только с начала строки кода, в которой она объявляется, до конца тела цикла. Когда начинается следующий цикл, внешняя переменная с тем же именем снова появляется и продолжает использовать значение в операторе for.

Думайте о forпеременной в цикле iкак о лампочке в комнате, а i := iэта строка кода подобна размещению экрана в углу комнаты, чтобы блокировать свет.

for i := 0; i < 3; i++ {
    
    
	fmt.Println("before:", i)
	i := i
	i = 100
	fmt.Println("after:", i)
}

выход:

before: 0
after: 100
before: 1
after: 100
before: 2
after: 100

Je suppose que tu aimes

Origine blog.csdn.net/qq_35760825/article/details/132205273
conseillé
Classement