Menu
CoddyTech

Nombres exportados vs. no exportados

Parte de la sección Programación Orientada a Objetos del Journey de GO de Coddy. Lección 4 de 107.

En Go, la primera letra de un nombre determina su visibilidad. Los nombres que empiezan con una letra mayúscula están exportados (son accesibles desde otros paquetes). Los nombres que empiezan con una letra minúscula no están exportados (son privados del paquete).

Nombres exportados: visibles fuera del paquete

type User struct {
    Name  string  // Campo exportado
    Email string  // Campo exportado
}

func CreateUser(name string) User { // Función exportada
    return User{Name: name}
}

Nombres no exportados: solo visibles dentro del paquete

type secret struct {     // Estructura no exportada
    password string      // Campo no exportado
}

func validate() bool {   // Función no exportada
    return true
}

Mixto: estructura exportada con algunos campos no exportados

type Account struct {
    Username string    // Exportado - accesible desde cualquier lugar
    Email    string    // Exportado - accesible desde cualquier lugar
    password string    // No exportado - solo dentro del paquete
}

Esta convención de nomenclatura reemplaza los modificadores de acceso como public y private que se encuentran en otros lenguajes.

// Letra mayúscula   = Exportado (público)
// Letra minúscula = No exportado (privado)

func SaveData() {}  // Exportado
func loadData() {}  // No exportado

Seguir esta convención es esencial en Go. Cuando otros paquetes importan tu código, solo pueden acceder a los nombres que empiezan con una letra mayúscula.

challenge icon

Desafío

Intermedio

Cambia todos los nombres de product.go para que sigan la convención de nombres exportados de Go. Escribe con mayúscula la primera letra de:

  • El nombre de la estructura: product → Product
  • Todos los nombres de campos: name, price, stock
  • Todos los nombres de funciones: totalValue, displayInfo
  • Todas las referencias a los campos dentro de las funciones

Pruébalo tú mismo

package main

import "fmt"

func main() {
    var name string
    var price float64
    var stock int
    fmt.Scan(&name, &price, &stock)

    p := Product{
        Name:  name,
        Price: price,
        Stock: stock,
    }

    fmt.Println(DisplayInfo(p))
    fmt.Printf("Total Value: %.2f\n", TotalValue(p))
}
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 Programación Orientada a Objetos

Practica por tu cuenta: Compilador de Go online