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