github.com/cnboonhan/delve@v0.0.0-20230908061759-363f2388c2fb/_fixtures/issue2113.go (about)

     1  package main
     2  
     3  import (
     4  	"fmt"
     5  	"runtime"
     6  	"sync"
     7  )
     8  
     9  func coroutine(i int, start, finish *sync.WaitGroup) {
    10  	defer finish.Done()
    11  
    12  	j := i * 2
    13  
    14  	if i == 99 {
    15  		runtime.Breakpoint()
    16  		start.Done()
    17  	} else {
    18  		start.Wait()
    19  	}
    20  
    21  	fmt.Println("hello ", i, j)
    22  	fmt.Println("goodbye", i, j)
    23  }
    24  
    25  func main() {
    26  	i := 0
    27  	var start, finish sync.WaitGroup
    28  	start.Add(1)
    29  	for ; i < 100; i++ {
    30  		finish.Add(1)
    31  		go coroutine(i, &start, &finish)
    32  	}
    33  	finish.Wait()
    34  	println(i)
    35  }