Junior — Middle
Программалоо тилинде функцияга өткөрүлүүчү кесимдин өлчөмүн кантип көбөйтүү керек?
sobes.tech AI
AIден жооп
Go тилинде, кесим (slice) — массивке ишара кылган көрсөткүчтү, узундугун жана сыйымдуулугун камтыган структура. Эгер функцияга өткөрүлгөн кесимдин өлчөмүн көбөйтүүнү кааласаңыз, төмөнкүлөрдү жасай аласыз:
- Кесимди мааниси менен өткөрүп бериңиз, бирок функциянын ичинде
appendфункциясын колдонуп, узундуусу же сыйымдуулугу көбөйтүлгөн жаңы кесим түзүңүз. - Эгер өзүңүздүн кесимди өзгөртүүнү (мисалы, узундугун көбөйтүү) жана өзгөртүүлөрдүн сырттан көрүнүшүн кааласаңыз, көрсөткүчтү (
*[]T) өткөрүп берсеңиз болот, андан кийин функциянын ичинде кесимди кайра аныктай аласыз.
Мисал, функциянын ичинде жаңы кесимди кайтарып, кеңейтүү:
func extendSlice(s []int, n int) []int {
// 0 элементтерди кошуу
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]
}
Ошентип, функциянын ичинде кесимдин өлчөмүн көбөйтүү үчүн, жаңы кесим кайтаруу же көрсөткүчтү берүү керек.