Sobes.tech
Junior — Middle

Կանխիկացվող փոփոխությունները, որոնք կատարվել են փոխանցված ցուցակում, ցուցադրվելու են այս պրոֆիլում գլոբալ կերպով?

sobes.tech AI

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

Go լեզվով, եթե փոխանցեք կտոր (slice) ֆունկցիային և փոփոխեք դրա տարրերը, այդ փոփոխությունները տեսանելի կլինեն ֆունկցիայի դուրս, քանի որ կտորը պարունակում է ցուցիչ տվյալների զանգվածի վրա:

Սակայն, եթե ֆունկցիայի ներսում փոփոխեք հենց կտորը (օրինակ, նշանակեք նոր կտոր), դա չի ազդի արտաքին կտորի վրա:

Օրինակ՝

func modifySlice(s []int) {
    s[0] = 100 // փոփոխում է սկզբնական կտորի տարրն
    s = append(s, 200) // փոփոխում է տեղական պատճենը, չի ազդում արտաքին վրա
}

func main() {
    slice := []int{1, 2, 3}
    modifySlice(slice)
    fmt.Println(slice) // Տպում է [100 2 3]
}

Այսպիսով, կտորի տարրերի փոփոխությունները գլոբալ կերպով արտացոլվում են, իսկ ինքնակտորի փոփոխությունը՝ ոչ։