Golang reflect.Select() and SelectCase() function example

package reflect

Golang reflect.Select() and SelectCase() function usage example

 package main

 import (
  "fmt"
  "reflect"
 )

 func main() {
  var sendCh = make(chan int) // channel to use (for send or receive)

  var increaseInt = func(c chan int) {
 for i := 0; i < 8; i++ {
 c <- i
 }
 close(c)
  }

  go increaseInt(sendCh)

  var selectCase = make([]reflect.SelectCase, 1)
  selectCase[0].Dir = reflect.SelectRecv
  selectCase[0].Chan = reflect.ValueOf(sendCh)

  counter := 0
  for counter < 1 {
 chosen, recv, recvOk := reflect.Select(selectCase) // <--- here
 if recvOk {
 fmt.Println(chosen, recv.Int(), recvOk)

 } else {
 counter++
 }
  }
 }

References :

http://golang.org/pkg/reflect/#Select

http://golang.org/pkg/reflect/#SelectCase

Advertisement