Skip to content

Instantly share code, notes, and snippets.

@tivrfoa
Created September 15, 2024 20:48
Show Gist options
  • Save tivrfoa/948a9660657278915328cdd3f3465efa to your computer and use it in GitHub Desktop.
Save tivrfoa/948a9660657278915328cdd3f3465efa to your computer and use it in GitHub Desktop.
Go goroutine wg sync.WaitGroup
// https://www.youtube.com/watch?v=VmBwn6Nac74
package main
import (
"fmt"
"sync"
// "time"
)
func sumNumbers(numbers [5]int) int {
sizes := make(chan int)
var wg sync.WaitGroup
for _, n := range numbers {
wg.Add(1)
go func(n int) {
fmt.Println("n = ", n)
defer wg.Done()
sizes <- n * 10
}(n)
}
go func() {
wg.Wait()
close(sizes)
}()
var sum int
for v := range sizes {
prevSum := sum
sum += v
fmt.Println(prevSum, "+", v, "=", sum)
}
return sum
}
func main() {
// go func() {
// fmt.Println("goroutine 1")
// }()
// time.Sleep(1 * time.Second)
numbers := [5]int{10, 20, 30, 40, 50}
fmt.Println(numbers)
fmt.Println("Sum is", sumNumbers(numbers))
fmt.Println("END")
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment