Sobes.tech
Senior

Որտե՞ղ են տեղակայված զանգվածը և քարտեզը՝ հողամասում կամ տախտակամածում։

sobes.tech AI

Պատասխան AI-ից

Go-ում զանգվածները սովորաբար stack-ում են տեղադրված, եթե դրանց չափը հայտնի է կոմպիլյացիայի ժամանակ և շատ մեծ չեն: Դա կապված է այն բանի հետ, որ զանգվածները ֆիքսված չափի արժեքներ են: Սակայն, եթե զանգվածը փոխանցվում է ցուցիչի տեսքով կամ օգտագործվում է այնպիսի կառուցվածքում, որը տեղակայված է heap-ում, ապա նաև զանգվածը կլինի heap-ում:

Go-ում Map-ը հղումային տիպ է, որը ներքինորեն իրականացվում է ցուցիչով դեպի տվյալների կառուցվածք heap-ում: Հետևաբար, map-ը միշտ տեղակայված է heap-ում, նույնիսկ եթե փոփոխականը տեղական է:

Օրինակ:

ֆունկցիա օրինակ() {
    var arr [10]int // stack-ում զանգված
    m := make(map[int]int) // heap-ում map
    _ = arr
    _ = m
}