Thank you for your quick answer, it is of a great help.

have a nice day.

On Thursday, March 4, 2021 at 5:11:40 PM UTC+1 axel.wa...@googlemail.com 
wrote:

> Interesting question. I think the code is fine. From the spec 
> <https://golang.org/ref/spec#Go_statements>:
>
> > The function value and parameters are evaluated as usual in the calling 
> goroutine, but unlike with a regular call, program execution does not wait 
> for the invoked function to complete.
>
> This means `onedoer.do` is immediately evaluated, before the loop 
> continues. The usual issue with loops is due to closures. So, this would be 
> wrong and have exactly the issue you are worried about:
>
> for _, onedoer := range d {
>     go func() { oneoder(&wg) }
> }
>
> But the go statement isn't equivalent to that, it doesn't close over the 
> function value, it evaluates it.
>
> On Thu, Mar 4, 2021 at 5:01 PM Julien Pivotto <roidel...@gmail.com> wrote:
>
>> Hello,
>>
>> In the following example: https://play.golang.org/p/yz_ifHC-Hut
>>
>> for _, onedoer := range d {
>>   go onedoer.do(&wg)
>> }
>>
>> Should I pass the function onedoer.do as a parameter of the go routine:  
>> https://play.golang.org/p/WHPahoayDbM ?
>>
>> for _, onedoer := range d {
>>   go func(od *doer, w *sync.WaitGroup) {
>>     od.do(w)
>>   }(onedoer, &wg)
>> }
>>
>> I am wondering if `go func()` could return before figuring out which 
>> function to run, creating a race with the loop.
>>
>>
>> Thanks in advance!
>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "golang-nuts" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to golang-nuts...@googlegroups.com.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/golang-nuts/6547c92f-a009-4fd4-abb2-801b2c44ea67n%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/golang-nuts/6547c92f-a009-4fd4-abb2-801b2c44ea67n%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/f427c44d-a2b3-416d-8496-bf308216a860n%40googlegroups.com.

Reply via email to