Usemos esta guía para aprender a usar la palabra clave de diferir en Go.
Golang diferir la palabra clave.
Para agregar mecanismo de diferir a una función, use la palabra clave de diferir seguida de la función o el nombre del método. Un código de ejemplo es como se muestra:
paquete principal
importar "fmt"
func Main ()
fmt.Println ("Running First")
diferir FMT.Println ("Ejeco Último")
fmt.Println ("Corrí en segundo")
En el ejemplo anterior, usamos la palabra clave de diferir a las palabras para retrasar la ejecución de la función en la cuarta línea. Esto significa que esta función se ejecutará la última.
Una salida de ejemplo es como se muestra:
$ Go Run Charla.ir
Corro primero
Corro segundo
Corro el último
Esto significa que el método solo se ejecuta después de que todos los demás métodos regresen.
Tenga en cuenta que la función o el método llamado con una palabra clave de diferir se ejecutará siempre que los otros métodos/funciones regresen. El retorno puede ser a través de un pánico o una ejecución normal.
Considere el ejemplo a continuación donde se llama a un método a pesar de un pánico.
paquete principal
importar "fmt"
func Main ()
diferir FMT.Println ("Run")
pánico ("Pánico!!!")
fmt.Println ("No ejecuto")
El código anterior debe devolver:
$ Go Run Charla.ir
Corro
Pánico: pánico!!!
Goroutine 1 [Running]:
principal.principal()
+0x73
Estado de salida 2
Orden de ejecución
Los argumentos de una función diferida se evalúan de inmediato, aunque la ejecución se retrasa hasta que la función circundante regresa.
Si tiene más de una llamada de función diferida, GO los organiza en una lista y los ejecuta en el último orden (LIFO).
Podemos ilustrar esto usando un bucle simple para el bucle simple como se muestra a continuación:
paquete principal
importar "fmt"
func Main ()
fmt.Println ("I Comience")
para i: = 1; i <= 5; i++
diferir FMT.Println (i)
fmt.Println ("I Second")
Podemos ver el orden de ejecución en la salida:
empiezo
Yo segundo
5
4
3
2
1
Use la función de diferir para devolver un valor
Puede usar una función diferida anónima para acceder y cambiar los parámetros de retorno de la función circundante.
Un ejemplo es como se muestra:
Func Say () (Str String)
diferir func ()
str = "Adiós"
()
Regresar "Hola!"
En este ejemplo, la función devuelve la cadena "adiós" en lugar de "hola".
Diferir el uso práctico - archivo cerrado
Un caso de uso del mundo real de la palabra clave de diferir es cerrar un archivo. Tome el ejemplo que se muestra a continuación:
Archivo, err: = OS.Abierto ("Hola.TXT")
Si err != nulo
registro.Fatal (err)
aplazar el archivo.Cerca()
escáner: = bufio.Newscanner (archivo)
escáner.División (bufio.Palabras de escaneo)
para escáner.Scan ()
fmt.Println (escáner.Texto())
Si err: = Scanner.Errar(); errar != nulo
registro.Fatal (err)
Abrimos el archivo para leer usando el método Open () en el ejemplo anterior. Luego usamos la palabra clave de diferir para retrasar la operación de cierre después de que se completa la operación de lectura.
Conclusión
En este artículo, discutimos cómo funciona para diferir la palabra clave y cómo podemos usarla para retrasar la ejecución de una función.
Gracias por leer!!