Menu
CoddyTech

Noms exportés et 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 majuscule sont exportés (accessibles depuis d’autres packages). Les noms commençant par une minuscule ne sont pas exportés (privés au package).

Noms exportés : visibles en dehors 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 : visibles uniquement à l’intérieur du package

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 package
}

Cette convention de nommage remplace les modificateurs d’accès comme public et private présents dans d’autres langages.

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

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

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

challenge icon

Défi

Moyen

Corrige tous les noms dans product.go pour respecter la convention de nommage des éléments exportés de Go. Mets en majuscule la première lettre de :

  • Le nom de la structure : product → Product
  • 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

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

Entraînez-vous par vous-même : Compilateur Go en ligne