Returnarea unui rezultat dintr-o funcție
Funcțiile pot returna un rezultat. Pentru a face acest lucru, trebuie să specificăm tipul rezultatului returnat după lista de parametri ai funcției. În corpul funcției, utilizăm operatorul return, urmat de valoarea returnată:
func nume_funcție (listă_parametri) tip_rezultate_returnate {
instrucțiuni_de_executat
return valoare_returnată
}
De exemplu, să presupunem că vrem să returnăm suma a două numere din funcție:
package main
import "fmt"
func main() {
var a = add(4, 5) // 9
var b = add(20, 6) // 26
fmt.Println(a)
fmt.Println(b)
}
func add(x, y int) int {
return x + y
}
Funcția add returnează o valoare de tipul int, de aceea acest tip este specificat după lista de parametri. În funcție, după operatorul return, se specifică valoarea returnată. Această valoare poate fi fie valoarea unei variabile, un literal, sau, ca în acest caz, rezultatul unei operații sau al unui apel de funcție. Adică, expresia x + y definește valoarea returnată.
Deoarece funcția returnează o valoare, la apelarea funcției putem obține acest rezultat și îl putem atribui unei variabile:
var a = add(4, 5) // 9
var b = add(20, 6) // 26
Rezultate returnate denumite
Rezultatul returnat poate fi denumit:
func add(x, y int) (z int) {
z = x + y
return
}
În paranteze, după lista de parametri, se definește practic o variabilă ale cărei valoare va fi returnată. La finalul funcției se pune operatorul return, dar acum nu este necesar să plasăm o valoare de returnat după acest operator. De fapt, am fi putut scrie și așa:
func add(x, y int) int {
var z int = x + y
return z
}
Returnarea mai multor valori
În Go, o funcție poate returna mai multe valori deodată. În acest caz, după lista de parametri se specifică, între paranteze, lista tipurilor valorilor returnate. După operatorul return, se află valorile returnate, separate prin virgulă:
package main
import "fmt"
func main() {
var age, name = add(4, 5, "Tom", "Simpson")
fmt.Println(age) // 9
fmt.Println(name) // Tom Simpson
}
func add(x, y int, firstName, lastName string) (int, string) {
var z int = x + y
var fullName = firstName + " " + lastName
return z, fullName
}
Funcția add primește patru parametri: două numere și două șiruri de caractere. Returnează un număr (tipul int) și un șir de caractere. Valorile returnate sunt specificate după operatorul return.
Deoarece funcția acum returnează două valori, atunci la apelarea acesteia putem atribui rezultatul ei celor două variabile:
var age, name = add(4, 5, "Tom", "Simpson")
Prima valoare returnată este atribuită primei variabile age, iar a doua valoare este atribuită celei de-a doua variabile name.
O altă metodă de atribuire a rezultatelor funcției variabilelor:
age, name := add(4, 5, "Tom", "Simpson")
De asemenea, în acest caz, am fi putut folosi rezultate denumite:
func add(x, y int, firstName, lastName string) (z int, fullName string) {
z = x + y
fullName = firstName + " " + lastName
return
}