1. Задача: Что выведет данный код? Если он работает некорректно, как это исправить?
package main
import "fmt"
func main() {
values := []int{1, 2, 3, 4, 5}
for _, val := range values {
go func() {
fmt.Printf("%d ", val)
}()
}
}Ответ
Код выведет: 5 5 5 5 5. Есть два способа решения проблемы: передавать переменную параметром в горутину или создавать локальную копию переменной на каждой итерации цикла.
2. Задача: Проанализировать работу со срезом структур в цикле
package main
import "fmt"
type test struct {
Number int64
String string
}
func main()…