slice در زبان برنامه نویسی گو
همانطور که از نماشان پیداست اسلاسها تکههایی از آرایه ها در زبان برنامه نویسی گو هستند که مستقلا مقداری را تعریف نمیکنند و ارجاعی برای آرایهها میباشند یعنی هر تغییر روی اسلایسها روی عنصر متناظر آن در آرایه متناظرش اعمال میشود و برعکس هر تغییری در محتوی آرایه مورد نظر در اسلایس مورد نظر در عنصر متناظر اعمال میشود.در حقیقت اسلایسها برای دست رسی داشتن به یک قسمت از یک مجموعه داده هستند.

سینتکس تعریف اسلاسها به صورت زیر میباشد:
var varName [3] int
/*خط زیر یک اسلایس از آرایه varName تعریف میکند.*/
sliceName:=varName[low : hiegh]
به مثال زیر توجه کنید:
package main
import “fmt”
func main() {
//یک ارایه رشتهای متشکل از ۴ عنصر تعریف میکند.
names := [4]string{
“John”,
“Paul”,
“George”,
“Ringo”,
}
//تمامی عناصر ارایه مورد نظر را در یک خط چاپ میکند.
fmt.Println(names)
//یک تکه یا اسلایس از آرایه ایجاد میکند که شامل عناصر صفر تا دو میباشد
a := names[0:2]
//یک تکه یا اسلایس از آرایه مورد نظر ایجاد میکند که شامل عناصر یک تا سه از آرایه مورد نظر میباشد.
b := names[1:3]
/*اسلایهای a , b را چاپ میکند*/
fmt.Println(a, b)
//اولین عنصر اسلایس را تغییر میکند.
//با توجه به این که اسلایس ها دادههای مستقلی نیستند و فقط یک ارجاع به عناصر ارایهها میباشند عنصر مورد نظر در آرایه مورد نظر تغییر خواهد کرد
b[0] = “XXX”
//سومین عنصر آرایه را تغییر میدهد و این یعنی اگر عنصر مورد نظر را در اسلایس مورد نظر چاپ کنید تغییر را مشاهده خواهید کرد
names[2]=”a”
fmt.Println(a, b)
fmt.Println(names)
}
خروجی مثال:
[John Paul George Ringo]
[John Paul] [Paul George]
[John XXX] [XXX a]
[John XXX a Ringo]