Latest web development tutorials

العودة اللغة شريحة (شريحة)

شريحة العودة اللغة هي مجموعة من التجريد.

الذهاب لا يمكن تغيير طول المصفوفة، وبالتالي فإن جمع ليست مفيدة في بعض الحالات، توفر العودة مرنة وقوية مدمجة في القسم نوع ( "مجموعة ديناميكية")، بالمقارنة مع طول مجموعة شريحة ليست ثابتة ، يمكن إضافة العناصر عندما يزيد قدرة إضافية قد جعل شرائح.


شريحة محددة

يمكنك الإعلان عن مجموعة من حجم غير محدد لتعريف شريحة:

var identifier []type

طول تشرح شرائح.

أو لإنشاء شريحة باستخدام جعل () وظيفة:

var slice1 []type = make([]type, len)

也可以简写为

slice1 := make([]type, len)

يمكنك أيضا تحديد القدرات، حيث قدرة اختيارية.

make([]T, length, capacity)

هنا ليون هو طول المصفوفة، وكذلك طول الأولي للشريحة.

التهيئة شريحة

s :=[] int {1,2,3 } 

أقسام التهيئة المباشرة [] تمثل نوعا شريحة، {1،2،3} القيم التهيئة تليها 1،2،3 سقف لها = ليون = 3

s := arr[:] 

تهيئة شريحة الصورة، هو إشارة إلى وصول مجموعة

s := arr[startIndex:endIndex] 

فإنه سيتم إنشاء شريحة جديدة إلى عنصر في مؤشر startIndex endIndex 1-قيد في آر

s := arr[startIndex:] 

العنصر الأخير أن آر الافتراضي عند endIndex

s := arr[:endIndex] 

مشيرا بدءا من العنصر الأول من وصول الوقت الافتراضي startIndex

s1 := s[startIndex:endIndex] 

شريحة من قبل شريحة الصورة تهيئة S1

s :=make([]int,len,cap) 

من خلال المدمج في وظيفة جعل () تهيئة شريحة ثانية، [] كثافة يحدد عناصرها من شرائح كثافة نوع


ليون () وغطاء وظيفة ()

شريحة غير المفهرسة، ويمكن الحصول عليها عن طريق أسلوب طول ليون ().

توفر شريحة طريقة لحساب الحد الأقصى للسعة () يمكن قياس ما يصل إلى أكبر عدد ممكن من شرائح.

الأمثلة المحددة التالية:

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)
}

تشغيل إخراج المثال أعلاه هو:

len=3 cap=5 slice=[0 0 0]

فارغة (لا شيء) شرائح

شريحة قبل الافتراضية غير مهيأ هو لا شيء، على طول 0، والأمثلة على النحو التالي:

package main

import "fmt"

func main() {
   var numbers []int

   printSlice(numbers)

   if(numbers == nil){
      fmt.Printf("切片是空的")
   }
}

func printSlice(x []int){
   fmt.Printf("len=%d cap=%d slice=%v\n",len(x),cap(x),x)
}

تشغيل إخراج المثال أعلاه هو:

len=0 cap=0 slice=[]
切片是空的

اعتراض شريحة

يمكنك تعيين شريحة اعتراض [بد السفلى: العلوي المربوطة ] عن طريق وضع الدنيا والعليا، والأمثلة على النحو التالي:

package main

import "fmt"

func main() {
   /* 创建切片 */
   numbers := []int{0,1,2,3,4,5,6,7,8}   
   printSlice(numbers)

   /* 打印原始切片 */
   fmt.Println("numbers ==", numbers)

   /* 打印子切片从索引1(包含) 到索引4(不包含)*/
   fmt.Println("numbers[1:4] ==", numbers[1:4])

   /* 默认下限为 0*/
   fmt.Println("numbers[:3] ==", numbers[:3])

   /* 默认上限为 len(s)*/
   fmt.Println("numbers[4:] ==", numbers[4:])

   numbers1 := make([]int,0,5)
   printSlice(numbers1)

   /* 打印子切片从索引  0(包含) 到索引 2(不包含) */
   number2 := numbers[:2]
   printSlice(number2)

   /* 打印子切片从索引 2(包含) 到索引 5(不包含) */
   number3 := numbers[2:5]
   printSlice(number3)

}

func printSlice(x []int){
   fmt.Printf("len=%d cap=%d slice=%v\n",len(x),cap(x),x)
}

تنفيذ النتائج خرج رمز أعلاه:

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]

إلحاق () ونسخ () وظيفة

إذا كنت ترغب في زيادة قدرة شريحة، يجب أن نخلق يتم نسخ شريحة جديدة وأكبر من شظايا الأصلي للمحتوى.

يصف التعليمة البرمجية التالية نسخة من شريحة وطريقة نسخة إلى إضافة عنصر جديد إلى إلحاق طريقة شريحة.

package main

import "fmt"

func main() {
   var numbers []int
   printSlice(numbers)

   /* 允许追加空切片 */
   numbers = append(numbers, 0)
   printSlice(numbers)

   /* 向切片添加一个元素 */
   numbers = append(numbers, 1)
   printSlice(numbers)

   /* 同时添加多个元素 */
   numbers = append(numbers, 2,3,4)
   printSlice(numbers)

   /* 创建切片 numbers1 是之前切片的两倍容量*/
   numbers1 := make([]int, len(numbers), (cap(numbers))*2)

   /* 拷贝 numbers 的内容到 numbers1 */
   copy(numbers1,numbers)
   printSlice(numbers1)   
}

func printSlice(x []int){
   fmt.Printf("len=%d cap=%d slice=%v\n",len(x),cap(x),x)
}

ويتم تنفيذ الإخراج رمز أعلاه:

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]