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
+4.1k Javascript : Empty an array example
+9.4k Golang : Timeout example
+13.9k Golang : How to check if a file is hidden?
+7k Golang : How to call function inside template with template.FuncMap
+10.1k Golang : Edge detection with Sobel method
+6.7k Golang : Derive cryptographic key from passwords with Argon2
+9.8k Golang : Qt get screen resolution and display on center example
+6.4k CodeIgniter : form input set_value cause " to become & quot
+37.5k Upload multiple files with Go
+9k Golang : Build and compile multiple source files
+5k Golang : Calculate a pip value and distance to target profit example