Przejdź do głównej treści
eLearner.app
Moduł 3 · Lekcja 1 z 511/50 w kursie~10 min
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

Go
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:

Go
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.

Go
func Sum(a, b int) int { ... }    // esportata
func helper() { ... }              // privata al package

Funkcje 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ęć.

Go
op := sum            // op ha tipo func(int, int) int
fmt.Println(op(2, 3)) // 5

main i init: dwie nazwy specjalne

  • func main() jest punktem wejścia pakietu main. Ż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

Ćwiczenie#go.m3.l1.e1
Próby: 0Ładowanie...

Zdefiniuj funkcję sum(a, b int) int, która zwraca a+b, a następnie wywołaj ją w main za pomocą (3, 4).

Ładowanie edytora...
Pokaż wskazówkę

Typ udostępniony: `(a, b int)`. Typ zwracany znajduje się PO nawiasach.

Rozwiązanie dostępne po 3 próbach

Ćwiczenie#go.m3.l1.e2
Próby: 0Ładowanie...

Zdefiniuj greet(ciąg nazwy) (bez wartości zwracanej), która wypisuje „ciao <nazwa>”.

Ładowanie edytora...
Pokaż wskazówkę

Brak typu zwracanego, jeśli funkcja nic nie zwraca.

Rozwiązanie dostępne po 3 próbach

Quiz#go.m3.l1.e3
Gotowe

Gdzie znajduje się typ parametru w Go?

Go
func f(? ?) {}
Opcje odpowiedzi

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).
  • main i init to nazwy zastrzeżone ze specjalną semantyką.