Using callbacks is very acceptable, especially for this type of server template, it is net/*used everywhere.
However, the channel version may look something like this:
func RunSomeServer() <- chan *SomeServer {
ch := make(chan *SomeServer)
someServer := &SomeServer{}
go func() {
for i := 0; i < 10; i++ {
ch <- someServer //make sure someServer handles concurrent access
}
close(ch)
//tear things down
}()
return ch
}
func TestSomeServer(t *testing.T) {
ch := RunSomeServer()
for ss := range ch {
_ = ss
//do stuff with ss
}
}
source
share