Golang reflect.SelectCase and SelectDir types example
package reflect
Golang reflect.SelectCase and SelectDir types usage example
package main
import (
"fmt"
"reflect"
)
func main() {
var chr = make(chan string, 1)
var rCase reflect.SelectCase
rCase.Dir = reflect.SelectRecv
rCase.Chan = reflect.ValueOf(chr)
// see http://golang.org/pkg/reflect/#SelectDir
// A SelectDir describes the communication direction of a select case.
fmt.Println("Direction of case : ", rCase.Dir) // SelectRecv enum #2 - direction of case
fmt.Println("Channel to use : ", rCase.Chan) // channel to use (for send or receive)
// invalid because this is SelectRecv case, not SelectSend
fmt.Println("Value to send : ", rCase.Send)
fmt.Println("-------------------------------------")
var chs = make(chan string, 2)
var sCase reflect.SelectCase
sCase.Dir = reflect.SelectSend
sCase.Send = reflect.ValueOf(chs)
// see http://golang.org/pkg/reflect/#SelectDir
fmt.Println("Direction of case : ", sCase.Dir) // SelectSend enum #1- direction of case
fmt.Println("Channel to use : ", sCase.Chan) // invalid because ONLY send, not send or receive
fmt.Println("Value to send : ", sCase.Send) // valid because this the SelectSend case
}
Output :
Direction of case : 2
Channel to use :
Value to send :
Direction of case : 1
Channel to use :
Value to send :
References :
Advertisement
Something interesting
Tutorials
+8.3k Golang : Auto-generate reply email with text/template package
+5.2k JavaScript/JQuery : Redirect page examples
+7.2k Golang : Use modern ciphers only in secure connection
+8.5k Golang : How to check if input string is a word?
+17.6k Golang : delete and modify XML file content
+6.1k Golang : Dealing with backquote
+18.4k Golang : Read binary file into memory
+6.6k Golang : How to validate ISBN?
+9.2k Golang : Write multiple lines or divide string into multiple lines
+6.7k Golang : Reverse by word