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  }