go 切片用法

  • 字面量
  • make()
  • append()
  • copy()
  • range
  • len()
  • cap()
  • nil ==

例子

package main

import (
	"fmt"
)

func main() {

	//字面量
	var s0 []int            //s0: nil
	var s1 = []int{0, 1, 2} //s1: [0,1,2]

	//make()
	var s2 = make([]int, 2)    //s2: [0,0],len = 2
	var s3 = make([]int, 2, 4) //s3: [0,0],len = 2,cap = 4

	//append()
	s0 = append(s0, 0)          // s0: [0]
	s1 = append(s1, 3, 4)       //s1: [0,1,2,3,4]
	s2 = append(s2, s1[2:4]...) //s2: [0,0,2,3], ... 解包操作

	//copy()
	length := copy(s3[0:], s1[1:]) //s3: [1,2],s1[1:]: [1,2,3,4]. length: 2
	fmt.Println(len(s3), len(s1[1:]), length)

	//range
	for i := range s3 { //i 是 s3 的索引
		fmt.Printf("s3[%v] = %v\n", i, s3[i])
	}

	//len()	cap()
	fmt.Println(len(s3), cap(s3)) //长度2,容量4

	//nil == , 只能和 nil 判等
	fmt.Println(nil == s0) //false

	fmt.Println(s0, s1, s2, s3)

}

输出

2 4 2
s3[0] = 1
s3[1] = 2
2 4
false
[0] [0 1 2 3 4] [0 0 2 3] [1 2]

猜你喜欢

转载自blog.csdn.net/u011714033/article/details/89846268