Menu
Coddy logo textTech

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 comienzan con una letra mayúscula son exportados (accesibles desde otros paquetes). Los nombres que comienzan con una letra minúscula no son exportados (privados para el 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 en cualquier lugar
    Email    string    // Exportado - accesible en 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 comienzan con una letra mayúscula.

challenge icon

Desafío

Intermedio

Corrige todos los nombres en product.go para seguir la convención de nomenclatura de exportación de Go. Pon en mayúscula la primera letra de:

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

Hoja de referencia

En Go, la primera letra de un nombre determina su visibilidad:

  • Letra mayúscula = Exportado (accesible desde otros paquetes)
  • Letra minúscula = No exportado (privado para el paquete)

Nombres exportados:

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:

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

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

Visibilidad mixta:

type Account struct {
    Username string    // Exportado - accesible en cualquier lugar
    Email    string    // Exportado - accesible en 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.

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