20- Go 切片的使用2

package main

import "fmt"

func main() {
	fmt.Println("============append函数的基本使用==========")
	s1 := []int{111, 222, 333, 444, 555, 666}
	fmt.Printf("切片的长度:%v,切片的容量:%v, 切片对应的数据为:%v\n", len(s1), cap(s1), s1)

	s1 = append(s1, 777)
	fmt.Printf("扩容之后的切片s1的长度为:%v,容量为:%v,对应的数据为:%v\n", len(s1), cap(s1), s1)
	//错误: s1[10] = 888再次提示:切片的有效赋值范围:为切片对应的长度范围内

	s1 = append(s1, 888, 999) //len=?  cap=?
	fmt.Printf("扩容之后的切片s1的长度为:%v,容量为:%v,对应的数据为:%v\n", len(s1), cap(s1), s1)
	//只有在切片的长度==容量的时候,扩容的切片,容量才会增加(一般容量会翻番,前提条件是:容量<1024)
	fmt.Println("============切片的容量大于1024的情况===================")

	s2 := make([]int, 1024, 1024)
	s2 = append(s2, 333)
	fmt.Printf("容量为1024的切片s2扩容的长度为:%v;容量为:%v\n", len(s2), cap(s2))
	fmt.Println("================扩容的数据为切片的情况=================")

	s2 = append(s2, s1...)
	fmt.Println("追加切片所有元素的情况:", s2)
	fmt.Println("=======================copy函数的使用===========================")
	data1 := []int{111, 222, 333, 444, 555, 666, 777, 888, 999, 1000}
	data2 := []int{123, 456, 789}
	copy(data1, data2)
	fmt.Println(data1)
	
	data3 := []int{1, 2, 3}
	copy(data3, data1)
	fmt.Println(data3)
}
GOROOT=C:\Go #gosetup
GOPATH=E:\Gosrc #gosetup
C:\Go\bin\go.exe build -o C:\Users\dell\AppData\Local\Temp\___go_build_2_go.exe E:/Gosrc/mage/切片类型2.go #gosetup
C:\Users\dell\AppData\Local\Temp\___go_build_2_go.exe #gosetup
============append函数的基本使用==========
切片的长度:6,切片的容量:6, 切片对应的数据为:[111 222 333 444 555 666]
扩容之后的切片s1的长度为:7,容量为:12,对应的数据为:[111 222 333 444 555 666 777]
扩容之后的切片s1的长度为:9,容量为:12,对应的数据为:[111 222 333 444 555 666 777 888 999]
============切片的容量大于1024的情况===================
容量为1024的切片s2扩容的长度为:1025;容量为:1280
================扩容的数据为切片的情况=================
追加切片所有元素的情况: [... 333 111 222 333 444 555 666 777 888 999]
=======================copy函数的使用===========================
[123 456 789 444 555 666 777 888 999 1000]
[123 456 789]

Process finished with exit code 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值