Salt la conținutul principal
Modulul 3 · Lecția 1 din 511/50 în curs~10 min
Lecții din modul (1/5)

Semnătura și parametrii

În Go, funcțiile sunt declarate cu func. Sintaxa semnăturii diferă din C/Java: tipul urmează numele parametrului, separat de a spatiu. Este o alegere care se citește mai bine cu voce tare — în schimb „n de tip int”. de „int n”.

Sintaxa de bază

Go
func sum(a int, b int) int {
    return a + b
}

func greet(name string) {
    fmt.Println("ciao", name)
}

O funcție fără valoare returnată omite pur și simplu tipul returnat.

Parametri consecutivi de același tip

Dacă mai mulți parametri consecutivi au același tip, puteți declara doar o dată pe ultimul. Este idiomatic și îl vei vedea peste tot:

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 { /* ... */ }

Funcții exportate versus neexportate

În Go, vizibilitatea este determinată de nume: identificatori care încep cu o literă mare sunt exportate (vizibile din alte pachete), celelalte sunt private la pachet.

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

Funcționează ca valori

Funcțiile sunt valori de primă clasă: le puteți aloca, le puteți transmite și returnează-le. Vom săpă mai adânc în lecția despre închideri.

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

main și init: două nume speciale

  • func main() este punctul de intrare al pachetului main. Fara argumente, fără valori returnate.
  • func init() este apelat automat la pornirea pachetului (chiar și multiple ori dacă mai multe fișiere definesc unul). Util pentru configurare; folosește-l cu moderație.

Încearcă

Exercițiu#go.m3.l1.e1
Încercări: 0Se încarcă…

Definiți o funcție sum(a, b int) int care returnează a+b, apoi apelați-o în main cu (3, 4).

Se încarcă editorul...
Afișează indiciu

Tip comun: `(a, b int)`. Tipul de returnare merge DUPĂ paranteze.

Soluție disponibilă după 3 încercări

Exercițiu#go.m3.l1.e2
Încercări: 0Se încarcă…

Definiți salut (șir de nume) (fără valoare returnată) care afișează „ciao <nume>”.

Se încarcă editorul...
Afișează indiciu

Niciun tip de returnare dacă funcția nu returnează nimic.

Soluție disponibilă după 3 încercări

Quiz#go.m3.l1.e3
Gata

Unde merge tipul de parametru în Go?

Go
func f(? ?) {}
Opțiuni de răspuns

Recapitulare

  • func name(param type, ...) returnType { ... }.
  • Tastați după nume; parametrii consecutivi de același tip → îl declară o singură dată.
  • Inițial majuscule = exportat; minuscule = privat la pachet.
  • Funcțiile sunt de primă clasă (atribuibile, acceptabile).
  • main și init sunt nume rezervate cu o semantică specială.