Junior — Middle
Чӣ тавр дуруст сохтани ва оғоз кардани slices дар Go?
sobes.tech AI
Ҷавоб аз AI
Дар Го, қисмҳо (slices) структураҳои маълумоти динамикӣ мебошанд, ки ишора ба массив бо дарозӣ ва иқтидори муайянро намояндагӣ мекунанд.
Қисмҳоро метавон бо роҳҳои гуногун эҷод ва оғоз намуд:
- Эълони қисм бе оғоз (nil-қисм):
var s []int // nil-қисм, дарозӣ ва иқтидор 0
- Оғоз кардани қисм бо истифода аз литерал:
s := []int{1, 2, 3} // қисм бо дарозии 3
- Эҷоди қисм бо истифода аз функсияи make:
s := make([]int, 5) // қисм бо дарозии 5, пур аз сифрҳо
s2 := make([]int, 3, 10) // дарозӣ 3, иқтидор 10
Функсияи make массивро дар пасзамина ҷудо мекунад ва қисмеро бармегардонад, ки ба он ишора мекунад.
- Эҷоди қисм аз массив:
arr := [5]int{1, 2, 3, 4, 5}
s := arr[1:4] // қисм аз унсурҳо бо индексҳои 1,2,3
Муҳим аст, ки ба ёд оред, ки қисмҳо ишораҳо ба массивҳо мебошанд, бинобарин тағир додани унсурҳо дар қисм инчунин массиви аслӣ тағир меёбад.
Масалан:
package main
import "fmt"
func main() {
s := make([]int, 3, 5)
fmt.Println(s) // [0 0 0]
fmt.Println(len(s)) // 3
fmt.Println(cap(s)) // 5
s = append(s, 4, 5)
fmt.Println(s) // [0 0 0 4 5]
fmt.Println(len(s)) // 5
fmt.Println(cap(s)) // 5
}
Интихоб барои кор бо массивҳои динамикӣ дар Go самаранок аст.