Я понятия не имею.
package main
import "fmt"
func main() {
mySlc := []int{1, 2}
count := 0
num := 5
fmt.Println(len(mySlc))
fmt.Print("Enter Len:")
for i := 0; i <= num-len(mySlc); i++ {
count++
var eded int
fmt.Print("Enter i:")
fmt.Scan(&eded)
mySlc = append(mySlc, eded)
}
fmt.Println(mySlc, count)
}
Я понятия не имею. Почему этот код golang возвращает 2 раза вместо 5?
mySlc
изменяется во время каждой итерации цикла, и обратите внимание, что i <= num - len(mySlc)
оценивается при каждом запуске цикла. Вы можете просмотреть это в интерактивном режиме, преобразовав это в цикл while с помощью
for {
...
}
и проверка состояния num - len(mySlc)
на каждой итерации.
Что ж, верно.
Выражение
i <= num-len(mySlc)
оценивается на каждой итерации цикла. Значение if увеличивается на 1 на каждой итерации, а значениеi
уменьшается на 1 на каждой итерации.