https://play.golang.org/p/36HbIQRXQAm
I need to pass a refference of slice into a function but something is wrong because iterating over slice doesn’t output any data.
package main
import (
"fmt"
)
func main() {
timeMarkers := []string{}
go timeMarkersSearch(&timeMarkers)
for _, marker := range timeMarkers {
fmt.Println(marker)
}
}
func timeMarkersSearch(timeMarkers *[]string) {
s1 := "s1"
s2 := "s2"
*timeMarkers = append(*timeMarkers, s1)
*timeMarkers = append(*timeMarkers, s2)
}
NobbZ
(Norbert Melzer)
2
There is nothing wrong, but main
prints the empty slice before the goroutine is able to add any elements.
You can either remove the go
or use a sync.WaitGroup
to synchronize your go routines as I did on the playground
2 Likes
inancgumus
(Inanc Gumus)
3
You don’t need to use sync.WaitGroup
for that. You can simply use a done channel. Here’s the refactored code.
I also think that you may want to use channels instead, like this.
2 Likes
system
(system)
Closed
4
This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.