Menu
Coddy logo textTech

Uso de punteros en funciones

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

Las funciones pueden aceptar y modificar variables a través de punteros. Esto permite que las funciones cambien el valor original, no solo una copia.

Crea una función que modifique un valor a través de un puntero:

func main() {
    number := 10
    fmt.Println("Before:", number)
    
    // Pasa la dirección de number
    doubleValue(&number)
    
    fmt.Println("After:", number)
}

func doubleValue(num *int) {
    // Modifica el valor en la dirección del puntero
    *num = *num * 2
}

La salida muestra el valor cambiado por la función:

Before: 10
After: 20

Cuando pasamos &number, la función recibe un puntero y puede modificar la variable original.

challenge icon

Desafío

Principiante

En este desafío, practicarás el uso de punteros en funciones. Debes completar una función que recibe un puntero a una cadena y modifica el valor de la cadena para que esté en mayúsculas.

La función makeUppercase ya está definida para ti. Tu tarea es modificar la cadena a la que apunta el puntero utilizando la función strings.ToUpper().

Hoja de referencia

Las funciones pueden modificar variables a través de punteros al recibir la dirección de memoria en lugar de una copia:

func main() {
    number := 10
    
    // Pasar la dirección de number usando &
    doubleValue(&number)
    
    fmt.Println(number) // Salida: 20
}

func doubleValue(num *int) {
    // Modificar el valor en la dirección del puntero usando *
    *num = *num * 2
}

Sintaxis clave de punteros:

  • &variable - obtiene la dirección de una variable
  • *pointer - desreferencia un puntero para acceder/modificar el valor
  • *type - declara un tipo de parámetro de puntero

Pruébalo tú mismo

package main

import (
	"fmt"
	"strings"
)

// makeUppercase toma un puntero a una cadena y cambia la cadena a mayúsculas
func makeUppercase(strPtr *string) {
	// TODO: Usa strings.ToUpper() para cambiar la cadena a la que apunta strPtr
	// Pista: Necesitas desreferenciar el puntero para acceder al valor de la cadena
	? = strings.ToUpper(?)
	
}

func main() {
	// Ya tenemos una variable de cadena
	message := "hello, world"
	
	// Imprimir el mensaje original
	fmt.Printf("Original message: %s\n", message)
	
	// Llamar a makeUppercase con la dirección de message
	makeUppercase(&message)
	
	// Imprimir el mensaje modificado
	fmt.Printf("Modified message: %s\n", 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