زبان برنامهنویسی گو/اسلایسها
شرط ها if , else , switch | اسلایسها در گو | نقشهها (Maps) |
زبان برنامهنویسی گو |
اسلایسها در زبان برنامهنویسی گو
ویرایشاسلایسها (Slice) در زبان برنامهنویسی گو یکی از انواع دادههای پرکاربرد و انعطافپذیر هستند. برخلاف آرایهها که اندازه ثابتی دارند، اسلایسها پویا هستند و میتوانند بهصورت خودکار رشد یا کاهش یابند. این ویژگی باعث میشود که اسلایسها ابزاری ایدهآل برای کار با مجموعههای داده باشند.
تعریف اسلایس
ویرایشاسلایسها میتوانند به روشهای مختلفی تعریف شوند:
ایجاد اسلایس از آرایه
ویرایشیک اسلایس میتواند نماینده بخشی از یک آرایه باشد:
package main
import "fmt"
func main() {
arr := [5]int{1, 2, 3, 4, 5}
slice := arr[1:4] // شامل عناصر با ایندکس 1 تا 3
fmt.Println(slice) // خروجی: [2 3 4]
}
ایجاد اسلایس با استفاده از تابع make
ویرایش
تابع make
برای ایجاد اسلایسهایی با طول و ظرفیت مشخص استفاده میشود:
package main
import "fmt"
func main() {
slice := make([]int, 3, 5)
fmt.Println(slice) // خروجی: [0 0 0]
}
تعریف مستقیم اسلایس
ویرایشمیتوانید یک اسلایس را بهطور مستقیم مقداردهی اولیه کنید:
package main
import "fmt"
func main() {
slice := []int{10, 20, 30}
fmt.Println(slice) // خروجی: [10 20 30]
}
طول و ظرفیت اسلایس
ویرایشهر اسلایس دارای دو خصوصیت اصلی است:
طول (Length)
: تعداد عناصر موجود در اسلایس.ظرفیت (Capacity)
: تعداد کل عناصری که اسلایس میتواند ذخیره کند بدون نیاز به تخصیص حافظه جدید.
برای بهدست آوردن طول و ظرفیت اسلایس از توابع len
و cap
استفاده میشود:
package main
import "fmt"
func main() {
slice := make([]int, 3, 5)
fmt.Println("طول:", len(slice)) // خروجی: طول: 3
fmt.Println("ظرفیت:", cap(slice)) // خروجی: ظرفیت: 5
}
افزودن عناصر به اسلایس
ویرایشاز تابع append
برای افزودن عناصر جدید به اسلایس استفاده میشود:
package main
import "fmt"
func main() {
slice := []int{1, 2, 3}
slice = append(slice, 4, 5)
fmt.Println(slice) // خروجی: [1 2 3 4 5]
}
کپی کردن اسلایس
ویرایشبرای کپی کردن عناصر یک اسلایس به اسلایس دیگر از تابع copy
استفاده میشود:
package main
import "fmt"
func main() {
source := []int{1, 2, 3}
destination := make([]int, len(source))
copy(destination, source)
fmt.Println(destination) // خروجی: [1 2 3]
}
اشارهگرها و اشتراک حافظه
ویرایشاسلایسها به دادههای زیربنایی خود اشاره میکنند. این بدان معناست که تغییر دادهها از طریق یک اسلایس، بر دیگر اسلایسهایی که به همان داده اشاره دارند تأثیر میگذارد:
package main
import "fmt"
func main() {
arr := [5]int{1, 2, 3, 4, 5}
slice1 := arr[1:4]
slice2 := arr[2:5]
slice1[0] = 100 // تغییر در دادههای مشترک
fmt.Println(slice2) // خروجی: [100 3 4]
}
برش اسلایس
ویرایشمیتوانید اسلایسها را مجدداً برش دهید تا اسلایس جدیدی ایجاد کنید:
package main
import "fmt"
func main() {
slice := []int{10, 20, 30, 40, 50}
newSlice := slice[1:4] // عناصر با ایندکس 1 تا 3
fmt.Println(newSlice) // خروجی: [20 30 40]
}
جمعبندی اسلایسها
ویرایشاسلایسها در زبان گو ابزاری قدرتمند برای کار با مجموعههای داده هستند. با استفاده از اسلایسها، میتوانید بدون نگرانی از محدودیتهای آرایهها، دادهها را مدیریت کنید. انعطافپذیری و قابلیت رشد پویا از ویژگیهای اصلی اسلایسها هستند.