github.com/nibnait/go-learn@v0.0.0-20220227013611-dfa47ea6d2da/src/test/chapter/ch4/27_select_test.go (about) 1 package ch4 2 3 import ( 4 "fmt" 5 "testing" 6 "time" 7 ) 8 9 func service() string { 10 time.Sleep(time.Millisecond * 500) 11 return "Done" 12 } 13 14 func AsyncService() chan string { 15 retCh := make(chan string, 1) 16 //retCh := make(chan string, 1) 17 go func() { 18 ret := service() 19 fmt.Println("returned result.") 20 retCh <- ret 21 fmt.Println("service exited.") 22 }() 23 return retCh 24 } 25 26 func TestSelect(t *testing.T) { 27 select { 28 case ret := <-AsyncService(): 29 t.Log(ret) 30 case <-time.After(time.Millisecond * 100): 31 t.Error("time out") 32 } 33 }