Comprender la funcionalidad de la palabra clave Defer de Go
Al trabajar con Go, comprender el comportamiento de la palabra clave aplazar es crucial. Esta palabra clave permite a los desarrolladores posponer la ejecución de una función hasta que regrese la función circundante. Sin embargo, es importante tener en cuenta que el valor y los parámetros de la función se evalúan cuando se ejecuta la instrucción aplazar.
Ejemplo: evaluación de la orden aplazar
Para ilustrar esto, considere lo siguiente código:
package main
import "fmt"
func main() {
defer having()(fun("with Go."))
fmt.Print("some ") // evaluation order: 3
}
func having() func(string) {
fmt.Print("Go ") // evaluation order: 1
return funWithGo
}
func fun(msg string) string {
fmt.Print("have ") // evaluation order: 2
return msg
}
func funWithGo(msg string) {
fmt.Println("fun", msg) // evaluation order: 4
}
En este ejemplo, el código se ejecuta en el siguiente orden:
Aplicación del principio de aplazamiento
Para resolver el problema mencionado en la consulta original, podemos utilizar la palabra clave aplazar para imprimir correctamente el precio del billete según en la edad ingresada. A continuación se muestra una versión modificada del código:
package main
import "fmt"
func main() {
age := 999
defer fmt.Println("Your age is:", getAge(&age)) // defer printing the age
defer fmt.Println("Your ticket price is:", getTicketPrice(age)) // defer printing the ticket price
}
func getTicketPrice(age int) float64 {
// Calculate ticket price based on age
// logic can be customized here
fmt.Println("...order is 2...")
switch {
case age 13 && age En este código modificado, aprovechamos correctamente la palabra clave defer para garantizar que la edad y el precio del boleto se impriman después de que se hayan ejecutado las funciones respectivas, resolviendo el problema inicial.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3