Lekcje modułu (1/5)
Sygnatura i parametry
W Go funkcje są deklarowane za pomocą func. Składnia podpisu jest inna
z C/Java: typ znajduje się po nazwie parametru, oddzielony znakiem a
przestrzeń. Jest to wybór, który lepiej brzmi na głos — zamiast tego „n typu int”.
z „int n”.
Podstawowa składnia
func sum(a int, b int) int {
return a + b
}
func greet(name string) {
fmt.Println("ciao", name)
}Funkcja bez wartości zwracanej po prostu pomija typ zwracany.
Kolejne parametry tego samego typu
Jeśli wiele kolejnych parametrów ma ten sam typ, możesz zadeklarować to tylko raz na ostatnim. To idiomatyczne i zobaczysz to wszędzie:
func sum(a, b int) int { return a + b }
func max3(a, b, c float64) float64 { /* ... */ }
func parse(s, sep string, limit int) []string { /* ... */ }Funkcje eksportowane i nieeksportowane
W Go widoczność jest określana na podstawie nazwy: rozpoczynających się identyfikatorów z dużą literą są eksportowane (widoczne z innych pakietów), pozostałe są prywatne w pakiecie.
func Sum(a, b int) int { ... } // esportata
func helper() { ... } // privata al packageFunkcje jako wartości
Funkcje są wartościami pierwszej klasy: możesz je przypisywać, przekazywać i zwrócić je. Zagłębimy się w lekcję dotyczącą zamknięć.
op := sum // op ha tipo func(int, int) int
fmt.Println(op(2, 3)) // 5main i init: dwie nazwy specjalne
func main()jest punktem wejścia pakietumain. Żadnych argumentów, żadnych wartości zwracanych.func init()jest wywoływany automatycznie podczas uruchamiania pakietu (nawet wielokrotnego razy, jeśli kilka plików definiuje jeden). Przydatne do konfiguracji; używaj go oszczędnie.
Spróbuj
Zdefiniuj funkcję sum(a, b int) int, która zwraca a+b, a następnie wywołaj ją w main za pomocą (3, 4).
Pokaż wskazówkę
Typ udostępniony: `(a, b int)`. Typ zwracany znajduje się PO nawiasach.
Rozwiązanie dostępne po 3 próbach
Zdefiniuj greet(ciąg nazwy) (bez wartości zwracanej), która wypisuje „ciao <nazwa>”.
Pokaż wskazówkę
Brak typu zwracanego, jeśli funkcja nic nie zwraca.
Rozwiązanie dostępne po 3 próbach
Gdzie znajduje się typ parametru w Go?
func f(? ?) {}Podsumowanie
- KODEF0.
- Wpisz po nazwie; kolejne parametry tego samego typu → zadeklaruj to tylko raz.
- Inicjał wielkimi literami = eksportowany; małe litery = prywatne w pakiecie.
- Funkcje są pierwszorzędne (przypisane, zadowalające).
mainiinitto nazwy zastrzeżone ze specjalną semantyką.