Menu
Coddy logo textTech

Noms exportés vs non exportés

Fait partie de la section Programmation Orientée Objet du Journey GO de Coddy — leçon 4 sur 107.

En Go, la première lettre d'un nom détermine sa visibilité. Les noms commençant par une lettre majuscule sont exportés (accessibles depuis d'autres packages). Les noms commençant par une lettre minuscule sont non exportés (privés au package).

Noms exportés — visibles à l'extérieur du package

type User struct {
    Name  string  // Champ exporté
    Email string  // Champ exporté
}

func CreateUser(name string) User { // Fonction exportée
    return User{Name: name}
}

Noms non exportés — uniquement visibles à l'intérieur du paquet

type secret struct {     // Structure non exportée
    password string      // Champ non exporté
}

func validate() bool {   // Fonction non exportée
    return true
}

Mixte — structure exportée avec certains champs non exportés

type Account struct {
    Username string    // Exporté - accessible partout
    Email    string    // Exporté - accessible partout
    password string    // Non exporté - uniquement à l'intérieur du paquet
}

Cette convention de nommage remplace les modificateurs d'accès tels que public et private que l'on trouve dans d'autres langages.

// Lettre majuscule = Exporté (public)
// Lettre minuscule = Non exporté (privé)

func SaveData() {}  // Exporté
func loadData() {}  // Non exporté

Suivre cette convention est essentiel en Go. Lorsque d'autres packages importent votre code, ils ne peuvent accéder qu'aux noms qui commencent par une lettre majuscule.

challenge icon

Défi

Moyen

Corrigez tous les noms dans product.go pour suivre la convention de nommage exportée de Go. Mettez en majuscule la première lettre de :

  • Le nom de la structure : productProduct
  • Tous les noms de champs : name, price, stock
  • Tous les noms de fonctions : totalValue, displayInfo
  • Toutes les références aux champs à l'intérieur des fonctions

Aide-mémoire

En Go, la première lettre d'un nom détermine sa visibilité :

  • Lettre majuscule = Exporté (accessible depuis d'autres packages)
  • Lettre minuscule = Non exporté (privé au package)

Noms exportés :

type User struct {
    Name  string  // Champ exporté
    Email string  // Champ exporté
}

func CreateUser(name string) User { // Fonction exportée
    return User{Name: name}
}

Noms non exportés :

type secret struct {     // Structure non exportée
    password string      // Champ non exporté
}

func validate() bool {   // Fonction non exportée
    return true
}

Visibilité mixte :

type Account struct {
    Username string    // Exporté - accessible partout
    Email    string    // Exporté - accessible partout
    password string    // Non exporté - uniquement à l'intérieur du package
}

Cette convention de nommage remplace les modificateurs d'accès comme public et private que l'on trouve dans d'autres langages.

Essayez vous-même

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 iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Programmation Orientée Objet