El lenguaje Go proporciona una implementación de soporte incorporada de la reflexión en tiempo de ejecución y permite que un programa manipule objetos con tipos arbitrarios con la ayuda del paquete de reflexión. La función reflect.Close() en Golang se usa para cerrar el canal v. Para acceder a esta función, es necesario importar el paquete reflect en el programa.
Sintaxis:
func (v Value) Close()Parámetros: Esta función no acepta ningún parámetro.
Valor devuelto: esta función no devuelve ningún valor.
Los siguientes ejemplos ilustran el uso del método anterior en Golang:
Ejemplo 1:
// Golang program to illustrate // reflect.Close() Function package main import ( "fmt" "reflect" ) type T int func IsClosed(ch <-chan T) bool { select { case <-ch: return true default: } return false } func main() { c := make(chan T) vc := reflect.ValueOf(c) fmt.Println(IsClosed(c)) // use of Close() method vc.Close() fmt.Println(IsClosed(c)) }
Producción:
false true
Ejemplo 2:
// Golang program to illustrate // reflect.Close() Function package main import ( "fmt" "reflect" ) func main() { c := make(chan int, 1) vc := reflect.ValueOf(c) succeeded := vc.TrySend(reflect.ValueOf(123)) fmt.Println(succeeded, vc.Len(), vc.Cap()) vSend, vZero := reflect.ValueOf(789), reflect.Value{} branches := []reflect.SelectCase{ {Dir: reflect.SelectDefault, Chan: vZero, Send: vZero}, {Dir: reflect.SelectRecv, Chan: vc, Send: vZero}, {Dir: reflect.SelectSend, Chan: vc, Send: vSend}, } selIndex, vRecv, sentBeforeClosed := reflect.Select(branches) fmt.Println(selIndex) fmt.Println(sentBeforeClosed) fmt.Println(vRecv.Int()) // use of Close() method vc.Close() }
Producción:
true 1 1 1 true 123
Publicación traducida automáticamente
Artículo escrito por SHUBHAMSINGH10 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA