go语言 切片的截取和底层数组关系

一、切片的截取

  •  就和java里面的数组一样,操作数组和数组中的元素

             

  • 代码示例 
package main

import "fmt"

func main() {
	arr := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
	// [low:high:max] 去下标从low开始的元素,len = high - low,cap = max - low
	s1 := arr[:] // arr[low:len(arr):len(arr)] 不指定容量,就默认为和长度一样
	fmt.Println("s1 = ", s1)
	fmt.Printf("len(s1) = %d, cap(s1) =  %d\n", len(s1), cap(s1))

	// 操作切片中某个元素,和操作数组中的元素一样
	a := arr[5]
	fmt.Printf("a = %d\n", a)

	b := arr[2:5:7]
	fmt.Println("b = ", b)
	fmt.Printf("len(b) = %d, cap(b) = %d\n", len(b), cap(b))

	c := arr[:6] // 常用 下标从0开始取,取6个,
	fmt.Println("c = ", c)
	fmt.Printf("len(c) = %d, cap(c) = %d\n", len(c), cap(c))

	d := arr[3:] // 从下标3开始取
	fmt.Println("d = ", d)
	fmt.Printf("len(d) = %d, cap(d) = %d\n", len(d), cap(d))

}

 二、切片和底层数组之间的关系

    操作切片中的元素,会影响底层数组

package main

import "fmt"

func main() {
	arr := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
	// 切片1
	s1 := arr[2:5] // 从下标2开始取,取三个元素
	s1[1] = 111
	fmt.Println("s1 = ", s1)   // [2 111 4]
	fmt.Println("arr = ", arr) // [0 1 2 111 4 5 6 7 8 9]

	// 切片2
	s2 := s1[2:7] // 从下标2开始取,取三个元素
	s2[1] = 222
	fmt.Println("s2 = ", s2)   //[4 222 6 7 8]
	fmt.Println("arr = ", arr) //[0 1 2 111 4 222 6 7 8 9]

}

猜你喜欢

转载自blog.csdn.net/m0_38068812/article/details/85220619
今日推荐