Junior — Middle
Fəaliyyətə arqument kimi ötürülən dilimə elementlər əlavə etmək mümkündürmü?
sobes.tech Süni İntellekt
AI-dan cavab
Bəli, funksiyaya ötürülən dilimə elementlər əlavə etmək mümkündür, lakin Go-da dilim (slice) massivə işarə edən, uzunluğu və tutumu olan bir strukturdur, buna görə də bunu başa düşmək vacibdir.
Əgər funksiyada append istifadə edib nəticəni lokal dəyişənə təyin etsəniz, dəyişikliklər funksiyadan kənarda orijinal dilimi təsir etməyəcək, yeni dilim qaytarmadığınız və ya dilimə işarəçi keçirmədiyiniz halda.
Misal:
func addElement(s []int) []int {
s = append(s, 42) // element əlavə et
return s
}
func main() {
s := []int{1, 2, 3}
s = addElement(s) // yenidən təyin etmək lazımdır
fmt.Println(s) // [1 2 3 42]
}
Əgər dilim üzərində dəyişiklik etmək istəyirsinizsə və onu geri qaytarmadan, göstərici keçirmək olar:
func addElementPtr(s *[]int) {
*s = append(*s, 42)
}
func main() {
s := []int{1, 2, 3}
addElementPtr(&s)
fmt.Println(s) // [1 2 3 42]
}