Junior — Middle
Կարո՞ղ է ավելացնել տարրեր ֆունկցիային որպես արգումենտ փոխանցված սլայսին:
sobes.tech AI
Պատասխան AI-ից
Այո, հնարավոր է ավելացնել տարրեր ֆունկցիային փոխանցված սլայսին, բայց կարևոր է հասկանալ, որ Go-ում սլայսը (slice) կառուցվածք է, որը պարունակում է ցուցիչ զանգվածի վրա, երկարություն և կարողություն:
Եթե ֆունկցիայում օգտագործում եք append և արդյունքը վերագրում եք տեղական փոփոխականի, փոփոխությունները չեն ազդի արտաքին սլայսի վրա, եթե միայն չվերադարձնեք նոր սլայս կամ չփոխանցեք սլայսի ցուցիչ:
Օրինակ՝
func addElement(s []int) []int {
s = append(s, 42) // ավելացնել տարր
return s
}
func main() {
s := []int{1, 2, 3}
s = addElement(s) // անհրաժեշտ է վերագրել
fmt.Println(s) // [1 2 3 42]
}
Եթե ցանկանում եք փոփոխել սլայսը ֆունկցիայի ներսում առանց վերադարձնելու, կարող եք փոխանցել ցուցիչ:
func addElementPtr(s *[]int) {
*s = append(*s, 42)
}
func main() {
s := []int{1, 2, 3}
addElementPtr(&s)
fmt.Println(s) // [1 2 3 42]
}