Menu
Coddy logo textTech

Nazwy eksportowane i nieeksportowane

Część sekcji Programowanie obiektowe ścieżki GO w Coddy. Lekcja 4 z 107.

W Go pierwsza litera nazwy określa jej widoczność. Nazwy zaczynające się od wielkiej litery są eksportowane (dostępne z innych pakietów). Nazwy zaczynające się od małej litery są nieeksportowane (prywatne dla pakietu).

Eksportowane nazwy: widoczne poza pakietem

type User struct {
    Name  string  // Eksportowane pole
    Email string  // Eksportowane pole
}

func CreateUser(name string) User { // Eksportowana funkcja
    return User{Name: name}
}

Nepublikowane nazwy: widoczne tylko wewnątrz pakietu

type secret struct {     // Nieeksportowana struktura
    password string      // Nieeksportowane pole
}

func validate() bool {   // Nieeksportowana funkcja
    return true
}

Mieszany: eksportowana struktura z niektórymi nieeksportowanymi polami

type Account struct {
    Username string    // Eksportowane - dostępne wszędzie
    Email    string    // Eksportowane - dostępne wszędzie
    password string    // Nieeksportowane - dostępne tylko wewnątrz pakietu
}

Ta konwencja nazewnictwa zastępuje modyfikatory dostępu, takie jak public i private, spotykane w innych językach.

// Wielka litera   = Eksportowane (publiczne)
// Mała litera = Nieeksportowane (prywatne)

func SaveData() {}  // Eksportowane
func loadData() {}  // Nieeksportowane

Przestrzeganie tej konwencji jest niezbędne w Go. Gdy inne pakiety importują twój kod, mogą uzyskać dostęp tylko do nazw zaczynających się wielką literą.

challenge icon

Wyzwanie

Średni

Popraw wszystkie nazwy w product.go, aby były zgodne z konwencją nazewnictwa eksportowanych elementów w Go. Zapisz pierwszą literę wielką w:

  • nazwie struktury: product → Product
  • wszystkich nazwach pól: name, price, stock
  • wszystkich nazwach funkcji: totalValue, displayInfo
  • wszystkich odwołaniach do pól wewnątrz funkcji

Spróbuj swoich sił

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 iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator Go online