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]
}
Тавре ки мебинем, барои зиёд кардани андозаи парча дар дохили функсия, бояд ё парчоро нав баргардонед ё ишорагӯ ба парчо гузаронед.