Golang基础知识-06-切片

切片

import "fmt"

func main() {
	s := []int{}
	fmt.Println(s, len(s), cap(s)) // [] 0 0
	
    // make能构建slice、map和channel,这3种数据类型都需要先为底层数据结构分配好内存,然后再初始化。
	s1 := make([]int, 3)
	fmt.Println(s1, len(s1), cap(s1)) // [0 0 0] 3 3

	s2 := make([]int, 3, 5)
	fmt.Println(s2, len(s2), cap(s2)) // [0 0 0] 3 5
}
import "fmt"

func main() {
	a := [...]int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9} // [0 1 2 3 4 5 6 7 8 9], len=10, cap=10

	/*
		格式:slice[low:high:max]
		low: 从第几个元素开始切
		high: 切到第几个元素(不含);切片元素个数 len = high - low
		max: 控制切片容量;切片容量 cap = max - low
		要求:low <= high <= max
	*/

	s1 := a[2:5:7] // [2 3 4], 				len=3,		cap=5
	s2 := a[2:5]   // [2 3 4], 				len=3,		cap=8
	s3 := a[2:]    // [2 3 4 5 6 7 8 9], 	len=8,		cap=8
	s4 := a[:5]    // [0 1 2 3 4], 			len=5,		cap=10

	s5 := a[::7]   // 语法错误
	s6 := a[2:5:]  // 语法错误

	fmt.Println(a, s1, s2, s3, s4)
	fmt.Println(len(a), len(s1), len(s2), len(s3), len(s4))
	fmt.Println(cap(a), cap(s1), cap(s2), cap(s3), cap(s4))
}
发布了8 篇原创文章 · 获赞 0 · 访问量 48

猜你喜欢

转载自blog.csdn.net/Landercy/article/details/104107870