Menu
Coddy logo textTech

Conceptos básicos del alcance de las funciones

Parte de la sección Fundamentos del Journey de GO de Coddy — lección 58 de 109.

En Go, las variables declaradas dentro de una función solo son accesibles dentro de esa función. Esto se llama alcance de función (function scope).

Crea una función con una variable local:

func calculateTotal(price int, quantity int) int {
    tax := 0.1 * float64(price * quantity)  // variable local
    total := price * quantity + int(tax)
    return total
}

func main() {
    result := calculateTotal(10, 2)
    fmt.Println("Total:", result)
    // fmt.Println(tax)  // Error: tax no es accesible aquí
}

La salida muestra solo el valor devuelto:

Total: 22

La variable tax solo existe dentro de la función calculateTotal y no se puede acceder desde main.

challenge icon

Desafío

Principiante

En este desafío, practicarás la comprensión del alcance de las funciones en Go. Necesitas corregir un programa sencillo que tiene un problema de alcance.

El programa tiene una variable global message y una función que intenta modificarla. Tu tarea es corregir el código para que la función actualice correctamente la variable global.

Hoja de referencia

Las variables declaradas dentro de una función solo son accesibles dentro de esa función (ámbito de función):

func calculateTotal(price int, quantity int) int {
    tax := 0.1 * float64(price * quantity)  // variable local
    total := price * quantity + int(tax)
    return total
}

func main() {
    result := calculateTotal(10, 2)
    fmt.Println("Total:", result)
    // fmt.Println(tax)  // Error: tax no es accesible aquí
}

Las variables locales existen solo dentro de su función y no se puede acceder a ellas desde el exterior.

Pruébalo tú mismo

package main

import "fmt"

// Variable global
var message string = "Hello from global scope"

func updateMessage() {
    // Esto crea una nueva variable local en lugar de modificar la global
    message := "Hello from function scope"
    fmt.Println("Inside function:", message)
}

func main() {
    fmt.Println("Before function call:", message)
    updateMessage()
    
    // TODO: El mensaje global sigue siendo el valor original
    // Modifica la función updateMessage() para cambiar la variable global
    fmt.Println("After function call:", message)
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentos