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]
}
Այսպիսով, կտորի տարրերի փոփոխությունները գլոբալ կերպով արտացոլվում են, իսկ ինքնակտորի փոփոխությունը՝ ոչ։