Menu
Coddy logo textTech

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 sont non 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 n'importe où
    Email    string    // Exporté - accessible n'importe où
    password string    // Non exporté - uniquement à l'intérieur du package
}

Cette convention de nommage remplace les modificateurs d’accès tels que 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é

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

challenge icon

Défi

Moyen

Corrige tous les noms dans product.go afin de 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 : 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

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