Elegir receptores
Parte de la sección Lógica y Flujo del Journey de GO de Coddy — lección 9 de 68.
Ahora que entiendes tanto los receptores de valor como los de puntero, la pregunta clave es: ¿cuándo deberías usar cada uno? La decisión se reduce a lo que tu método necesite hacer con el receptor.
Usa un pointer receiver cuando tu método necesite modificar el struct original. Dado que los pointer receivers trabajan con la instancia real del struct, cualquier cambio realizado dentro del método persistirá después de que el método retorne. Esto es esencial para los métodos que actualizan campos, cambian el estado o realizan operaciones que deban afectar a los datos originales.
Usa un receptor de valor cuando tu método solo necesite leer datos del struct sin cambiarlo. Los receptores de valor trabajan con una copia, por lo que son perfectos para métodos que calculan valores, formatean la salida o realizan cualquier operación que no requiera modificar el struct original. También proporcionan seguridad al garantizar que los datos originales permanezcan inalterados.
Como regla general: si tu método cambia el struct, usa un receptor de puntero. Si tu método solo lee del struct, usa un receptor de valor. Este enfoque aclara las intenciones de tu código y ayuda a prevenir modificaciones no deseadas en tus datos.
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Hoja de referencia
Usa un pointer receiver (receptor de puntero) cuando tu método necesite modificar el struct original:
- Los cambios realizados dentro del método persistirán después de que el método termine
- Esencial para métodos que actualizan campos o cambian el estado
Usa un value receiver (receptor de valor) cuando tu método solo necesite leer datos del struct:
- Trabaja con una copia, por lo que los datos originales permanecen sin cambios
- Perfecto para métodos que calculan valores o formatean la salida
- Proporciona seguridad al garantizar que no haya modificaciones no deseadas
Regla general: Si tu método cambia el struct, usa un pointer receiver. Si tu método solo lee del struct, usa un value receiver.
Pruébalo tú mismo
Esta lección no incluye un desafío de código.
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y Flujo
1Flujo de control avanzado
Switch con `fallthrough`Salir de bucles anidadosContinuar un bucle específicoLa sentencia `goto`Repaso: Control de bucles avanzado4Proyecto: Lista de tareas sencilla
Configuración del proyectoAñadir una tarea2Estructuras y Métodos
Definición de métodos en estructurasReceptores de valorReceptores de punteroElegir receptoresMétodos vs FuncionesResumen - Comportamiento de estructuras5Mapas en profundidad
Mapas de StructsPunteros como valores de MapVerificación de Maps NilComparación de MapsResumen - Contador de frecuencia de palabras3Interfaces (Conceptos básicos)
¿Qué es una interfaz?Definir una interfazImplementar una interfazUso de tipos de interfazInterfaz vacíaAserciones de tipoType SwitchResumen: Formas y comportamientos