|
@@ -1,7 +1,10 @@
|
|
|
/**
|
|
|
-测试golang slice扩展长度的规则
|
|
|
+1. 测试golang slice扩展长度的规则
|
|
|
+2. 测试golang slice切割后cap的变化
|
|
|
|
|
|
-结论, slice cap空间够的时候,cap不变,cap不够的时候,会乘2.
|
|
|
+结论:
|
|
|
+1. slice cap空间够的时候,cap不变,cap不够的时候,会乘2.
|
|
|
+2. slice切割后的cap为原slice切割时的起始位置往后的长度
|
|
|
*/
|
|
|
package main
|
|
|
|
|
@@ -9,6 +12,7 @@ import "fmt"
|
|
|
|
|
|
func main() {
|
|
|
var ary = make([]int, 1, 1)
|
|
|
+ var strAry []string
|
|
|
|
|
|
ary[0] = 1
|
|
|
fmt.Printf("value: %v, len: %v, cap: %v\n", ary, len(ary), cap(ary))
|
|
@@ -24,4 +28,46 @@ func main() {
|
|
|
|
|
|
ary = append(ary, 5)
|
|
|
fmt.Printf("value: %v, len: %v, cap: %v\n", ary, len(ary), cap(ary))
|
|
|
+
|
|
|
+ fmt.Println("-----------------------------------------")
|
|
|
+
|
|
|
+ ary = make([]int, 3, 3)
|
|
|
+ fmt.Printf("value: %v, len: %v, cap: %v\n", ary, len(ary), cap(ary))
|
|
|
+
|
|
|
+ strAry = make([]string, 3, 3)
|
|
|
+ fmt.Printf("value: %v, len: %v, cap: %v\n", strAry, len(strAry), cap(strAry))
|
|
|
+
|
|
|
+ fmt.Println("-----------------------------------------")
|
|
|
+
|
|
|
+ var subAry []int
|
|
|
+
|
|
|
+ ary = make([]int, 5, 5)
|
|
|
+ subAry = ary[1:4]
|
|
|
+ subAry[0] = 1
|
|
|
+ fmt.Printf("ary value: %v, len: %v, cap: %v\n", ary, len(ary), cap(ary))
|
|
|
+ fmt.Printf("subAry value: %v, len: %v, cap: %v\n", subAry, len(subAry), cap(subAry))
|
|
|
+
|
|
|
+ ary = make([]int, 10, 10)
|
|
|
+ subAry = ary[1:4]
|
|
|
+ subAry[0] = 1
|
|
|
+ fmt.Printf("ary value: %v, len: %v, cap: %v\n", ary, len(ary), cap(ary))
|
|
|
+ fmt.Printf("subAry value: %v, len: %v, cap: %v\n", subAry, len(subAry), cap(subAry))
|
|
|
+
|
|
|
+ ary = make([]int, 10, 10)
|
|
|
+ subAry = ary[0:1]
|
|
|
+ subAry[0] = 1
|
|
|
+ fmt.Printf("ary value: %v, len: %v, cap: %v\n", ary, len(ary), cap(ary))
|
|
|
+ fmt.Printf("subAry value: %v, len: %v, cap: %v\n", subAry, len(subAry), cap(subAry))
|
|
|
+
|
|
|
+ ary = make([]int, 10, 10)
|
|
|
+ subAry = ary[4:5]
|
|
|
+ subAry[0] = 1
|
|
|
+ fmt.Printf("ary value: %v, len: %v, cap: %v\n", ary, len(ary), cap(ary))
|
|
|
+ fmt.Printf("subAry value: %v, len: %v, cap: %v\n", subAry, len(subAry), cap(subAry))
|
|
|
+
|
|
|
+ ary = make([]int, 10, 10)
|
|
|
+ subAry = ary
|
|
|
+ subAry[0] = 1
|
|
|
+ fmt.Printf("ary value: %v, len: %v, cap: %v\n", ary, len(ary), cap(ary))
|
|
|
+ fmt.Printf("subAry value: %v, len: %v, cap: %v\n", subAry, len(subAry), cap(subAry))
|
|
|
}
|