@kolo2012

Это фича или баг?

Всегда будет 2
package main

import (
	"fmt"
	"sync"
)

func main() {
	q := []string{"1", "2"}
	wg := new(sync.WaitGroup)
	for _, val := range q {
		wg.Add(1)
		go func(){
			fmt.Println(val)
			wg.Done()
		}()
	}
	wg.Wait()
}

https://play.golang.org/p/pSwQVmjsV-
  • Вопрос задан
  • 434 просмотра
Пригласить эксперта
Ответы на вопрос 1
dasha_programmist
@dasha_programmist
ex Software Engineer at Reddit TS/React/GraphQL/Go
читай про замыкания (частые ошибки новичков), как происходит захват переменной, чтобы результат был ожидаемый вот пример кода
package main

import (
  "fmt"
  "sync"
)

func main() {
  q := []string{"1", "2"}
  wg := new(sync.WaitGroup)
  for _, val := range q {
    wg.Add(1)
    go func(tVal string){
      fmt.Println(tVal)
      wg.Done()
    }(val)
  }
  wg.Wait()
}

вот еще классная статья, прочитав которую не будешь допускать такие ошибки
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы