golang

切片增加 Link to heading

使用append方法可以给切片后面追加数据,返回新切片;

容量够追加 Link to heading

如果一个切片数据,足够容纳追加的数据,那么不会新开辟内存

package main

import "fmt"

func main() {
  // make函数创建切片make(类型,长度,容量)
	var slice = make([]int, 5, 10)
	s1 := append(slice, 2, 3)
	fmt.Println(slice)
	fmt.Println(s1)
  // 修改第二个数据
	s1[1] = 111

  // [0 111 0 0 0]
	fmt.Println(slice)
  // [0 111 0 0 0 2 3]
	fmt.Println(s1)

}

容量不够追加 Link to heading

切片容量不够追加,会创建新变量并2倍扩容

package main

import "fmt"

func main() {
	var slice = make([]int, 5, 10)

	s1 := append(slice, 2, 3, 4, 5, 6, 7)

	s1[1] = 111
  // 【0 0 0 0 0】
	fmt.Println(slice)
  // [0 111 0 0 0 555 3 4 5 6 7]
	fmt.Println(s1)

}

img

切片插入 Link to heading

利于切片方法和append可以实现从切片中插入数据

package main

import "fmt"

func main() {
	// 在特定位置插入 233
	d := []int{11, 22, 33, 44, 55}
	d = append(d[:2], append([]int{233}, d[2:]...)...)
	fmt.Println(d)
}

切片删除 Link to heading

package main

import "fmt"

func main() {
	// 删 33
	c := []int{11, 22, 33, 44, 55}
	c = append(c[:2], c[2+1:]...)
	fmt.Println(c)
}