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ă
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:
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.
func Sum(a, b int) int { ... } // esportata
func helper() { ... } // privata al packageFuncț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.
op := sum // op ha tipo func(int, int) int
fmt.Println(op(2, 3)) // 5main și init: două nume speciale
func main()este punctul de intrare al pachetuluimain. 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ă
Definiți o funcție sum(a, b int) int care returnează a+b, apoi apelați-o în main cu (3, 4).
Afișează indiciu
Tip comun: `(a, b int)`. Tipul de returnare merge DUPĂ paranteze.
Soluție disponibilă după 3 încercări
Definiți salut (șir de nume) (fără valoare returnată) care afișează „ciao <nume>”.
Afișează indiciu
Niciun tip de returnare dacă funcția nu returnează nimic.
Soluție disponibilă după 3 încercări
Unde merge tipul de parametru în Go?
func f(? ?) {}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șiinitsunt nume rezervate cu o semantică specială.