Junior — Middle
Kuidas muutub virna kasutus programmi töö ajal?
sobes.tech AI
Vastus AI-lt
Programmi käigus stek kasutatakse teabe salvestamiseks funktsioonikõnede, kohalike muutujate ja täitmise voogude kontrolli kohta.
Kui funktsioon kutsutakse, pannakse stekile kontekst (raam), mis sisaldab:
- Tagasipöördumis aadressi (kuhu tagasi pärast funktsiooni lõpetamist)
- Kohalikke muutujaid
- Funktsiooni parameetreid
Funktsiooni lõpetamisel eemaldatakse selle raam stekilt.
Go keeles kasvab ja kahaneb stek dünaamiliselt vastavalt vajadusele, võimaldades tõhusat mälu kasutamist. Näiteks rekursiivse funktsiooni kutsumisel laieneb stek, ja funktsioonidest väljumisel kahaneb.
Näide:
func factorial(n int) int {
if n == 0 {
return 1
}
return n * factorial(n-1)
}
func main() {
result := factorial(5)
fmt.Println(result) // 120
}
Siin lisab iga factorial kutsung uue raami stekile, mis eemaldatakse funktsioonist naastes.