با آموزش کار با Slices در برنامه نویسی GO در چهاردهمین جلسه از آموزش برنامه نویسی Go در خدمت شما هستیم. لطفا تا انتهای جلسه ما رو همراهی نمایید.
آموزش کار با Slices در برنامه نویسی GO
Slice یا قطعات در زبان برنامه نویسی go یک برداشت از آرایه هاست همانطور که زبانGo به شما اجازه تعریف انواع متغیرها که میتوانند داده ها زیادی نگه دارند،را میدهد،اما هیچ متد داخلی برای افزایش سایز به صورت داینامیک یا ساخت زیر آرایه ندارداما Slice ها این محدودیت را ازبین می برند.و تابع های زیادی برای آرایه ها فراهم میکنند ودر Go بسیار کاربرد دارند.
Go Slice is an abstraction over Go Array. Go Array allows you to define variables that can hold several data items of the same kind but it does not provide any inbuilt method to increase its size dynamically or get a sub-array of its own. Slices overcome this limitation. It provides many utility functions required on Array and is widely used in Go programming.
تعریف یک Slice در برنامه نویسی Go
برای تعریف یکSlice میتوانید آن را به عنوان یک آرایه بدون تعیین سایز تعریف کنید
1 2 3 |
var numbers []int /* a slice of unspecified size */ /* numbers == []int{0,0,0,0,0}*/ numbers = make([]int,5,5) /* a slice of length 5 and capacity 5*/ |
توابع len() و cap() در برنامه نویسی Go
Slice یک نوع مفهوم وبرداشت از آرایه است.دراصل از آرایه و زیرمجموعه تابع structure.len() استفاده میکند و تعداد عناصر داخل Slice را برمیگردانددرحالیکه تابع cap() ظرفیت یک slice را برمیگرداند مقال زیر استفاده از این slice است.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
package main import "fmt" func main() { var numbers = make([]int,3,5) printSlice(numbers) } func printSlice(x []int){ fmt.Printf("len=%d cap=%d slice=%v\n",len(x),cap(x),x) } |
خروجی کدبالا
1 |
len=3 cap=5 slice=[0 0 0]Nil slice |
Nil slice در برنامه نویسی Go
اگر یک slice بدون ورودی تعریف شود،بعنوان یک slice بدون مقدار در نظر گرفته میشود وظرفیت آن صفر میشود
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
package main import "fmt" func main() { var numbers []int printSlice(numbers) if(numbers == nil){ fmt.Printf("slice is nil") } } func printSlice(x []int){ fmt.Printf("len=%d cap=%d slice=%v\n",len(x),cap(x),x) } |
خروجی کدبالا
1 2 |
len = 0 cap = 0 slice = [] slice is nil |
Subslicing در برنامه نویسی Go
Slice اجازه استفاده از زیر مجموعه(subslice) را نیز میدهد مثال زیر نمونه ای از این استفاده است
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
package main import "fmt" func main() { /* create a slice */ numbers := []int{0,1,2,3,4,5,6,7,8} printSlice(numbers) /* print the original slice */ fmt.Println("numbers ==", numbers) /* print the sub slice starting from index 1(included) to index 4(excluded)*/ fmt.Println("numbers[1:4] ==", numbers[1:4]) /* missing lower bound implies 0*/ fmt.Println("numbers[:3] ==", numbers[:3]) /* missing upper bound implies len(s)*/ fmt.Println("numbers[4:] ==", numbers[4:]) numbers1 := make([]int,0,5) printSlice(numbers1) /* print the sub slice starting from index 0(included) to index 2(excluded) */ number2 := numbers[:2] printSlice(number2) /* print the sub slice starting from index 2(included) to index 5(excluded) */ number3 := numbers[2:5] printSlice(number3) } func printSlice(x []int){ fmt.Printf("len=%d cap=%d slice=%v\n",len(x),cap(x),x) } |
خروجی کد بالا
1 2 3 4 5 6 7 8 |
len = 9 cap = 9 slice = [0 1 2 3 4 5 6 7 8] numbers == [0 1 2 3 4 5 6 7 8] numbers[1:4] == [1 2 3] numbers[:3] == [0 1 2] numbers[4:] == [4 5 6 7 8] len = 0 cap = 5 slice = [] len = 2 cap = 9 slice = [0 1] len = 3 cap = 7 slice = [2 3 4] |
توابع append() و copy() در برنامه نویسی Go
Slice به شما اجازه افزایش ظرفیت را بااستفاده از تابع append() می دهد.بااستفاده از تابع copy() محتوای Slice به Slice مقصد کپی میشود مثال:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
package main import "fmt" func main() { var numbers []int printSlice(numbers) /* append allows nil slice */ numbers = append(numbers, 0) printSlice(numbers) /* add one element to slice*/ numbers = append(numbers, 1) printSlice(numbers) /* add more than one element at a time*/ numbers = append(numbers, 2,3,4) printSlice(numbers) /* create a slice numbers1 with double the capacity of earlier slice*/ numbers1 := make([]int, len(numbers), (cap(numbers))*2) /* copy content of numbers to numbers1 */ copy(numbers1,numbers) printSlice(numbers1) } func printSlice(x []int){ fmt.Printf("len=%d cap=%d slice=%v\n",len(x),cap(x),x) } |
1 2 3 4 5 |
len = 0 cap = 0 slice = [] len = 1 cap = 2 slice = [0] len = 2 cap = 2 slice = [0 1] len = 5 cap = 8 slice = [0 1 2 3 4] len = 5 cap = 16 slice = [0 1 2 3 4] |
لیست مطالب جلسه قبل برنامه نویسی Go
- آموزش برنامه نویسی Go – زبان برنامه نویسی گو چیست؟ آشنایی با زبان و محیط برنامه نویسی Go
- آموزش برنامه نویسی Go – ساختار برنامه نویسی GO
- آموزش برنامه نویسی Go – قواعد برنامه نویسی GO
- آموزش برنامه نویسی Go – انواع داده در برنامه نویسی GO
- آموزش برنامه نویسی Go – کار با متغیر های برنامه نویسی GO
- آموزش کار با ثابت های برنامه نویسی GO
- ساخت تصمیم در GO و آموزش کار با عملگرها در برنامه نویسی GO
- آموزش کار با حلقه ها در برنامه نویسی GO
- آموزش کار با توابع در برنامه نویسی GO
- آموزش کار با Scope Rules در برنامه نویسی GO
- آموزش کار با آرایه در برنامه نویسی GO
- آموزش کار با اشاره گر ها در برنامه نویسی GO
- آموزش کار ساختار ها در برنامه نویسی GO
پیشنهاد ویژه 1 : مقالات و کتاب های آموزشی برنامه نویسی GO
پیشنهاد ویژه 2 : فیلم های آموزشی زبان برنامه نویسی GO
راستی! برای دریافت مطالب جدید در کانال تلگرام یا پیج اینستاگرام سورس باران عضو شوید.
- منبع : سورس باران
- رمز فايل : www.sourcebaran.com
- انتشار: ۲۲ اردیبهشت ۱۳۹۸
دسته بندی موضوعات
- آموزش ارز دیجیتال
- آموزش برنامه نویسی
- آموزش متنی برنامه نویسی
- اطلاعیه و سایر مطالب
- پروژه برنامه نویسی
- رپورتاژ
- فروشگاه
- فیلم های آموزشی
- ++C
- ADO.NET
- Adobe Flash
- Ajax
- AngularJS
- apache
- ARM
- Asp.Net
- ASP.NET MVC
- AVR
- Bootstrap
- CCNA
- CCNP
- CMD
- CSS
- Dreameaver
- EntityFramework
- Go
- HTML
- IOS
- jquery
- Linq
- Mysql
- Oracle
- PHP
- PHPMyAdmin
- Rational Rose
- silver light
- SQL Server
- Stimulsoft Reports
- Telerik
- UML
- VB.NET&VB6
- WPF
- Xml
- آموزش های پروژه محور
- اتوکد
- الگوریتم تقریبی
- امنیت
- اندروید
- اندروید استودیو
- بک ترک
- بیسیک فور اندروید
- پایتون
- جاوا
- جاوا اسکریپت
- جوملا
- دلفی
- دوره های رایگان پیشنهادی
- زامارین
- سئو
- ساخت CMS
- سی شارپ
- شبکه و مجازی سازی
- طراحی الگوریتم
- طراحی بازی
- طراحی وب
- فتوشاپ
- فریم ورک codeigniter
- فلاتر
- کانستراکت
- کریستال ریپورت
- لاراول
- معماری کامپیوتر
- مهندسی اینترنت
- هوش مصنوعی
- یونیتی
- کتاب های آموزشی
- Android
- ASP.NET
- AVR
- LINQ
- php
- Workflow
- اچ تی ام ال
- بانک اطلاعاتی
- برنامه نویسی سوکت
- برنامه نویسی موبایل
- پاسکال
- پایان نامه
- پایتون
- جاوا
- جاوا اسکریپت
- جی کوئری
- داده کاوی
- دلفی
- رباتیک
- سئو
- سایر کتاب ها
- سخت افزار
- سی اس اس
- سی پلاس پلاس
- سی شارپ
- طراحی الگوریتم
- فتوشاپ
- مقاله
- مهندسی نرم افزار
- هک و امنیت
- هوش مصنوعی
- ویژوال بیسیک
- نرم افزار و ابزار برنامه نویسی
- وردپرس