go语言(七)----slice的声明方式

1、声明方式一

go 复制代码
//声明一个slice1是一个切片,但是并没有给slice分配空间
	var slice1 []int
	slice1 = make([]int,3)

2、声明方式二

go 复制代码
声明一个slice切片,同时给slice分配空间,3个空间,初始化值是0
	var slice1 []int = make([]int,3)

3、声明方式三

go 复制代码
//声明slice是一个切片,同时给slice分配空间,3个空间,初始化值是0,通过:=推导出slice是一个切片
	slice1 := make([]int,3)
go 复制代码
package main

import "fmt"

func main() {
	//声明一个slice1是一个切片,但是并没有给slice分配空间
	var slice1 []int
	//slice1 = make([]int,3)
	//声明一个slice切片,同时给slice分配空间,3个空间,初始化值是0
	//var slice1 []int = make([]int,3)

	//声明slice是一个切片,同时给slice分配空间,3个空间,初始化值是0,通过:=推导出slice是一个切片
	//slice1 := make([]int,3)


	//slice1[0] = 100
	fmt.Println(slice1)

	if slice1 == nil {
		fmt.Println("slice1 是一个空切片")

	} else {
		fmt.Println("slice1 是有空间的")
	}
}

二、切片容量的追加

1、切片的长度和容量不同,长度表示左指针到右指针之间的距离。容量表示左指针到底层数组末尾的距离。

2、切片的扩容机制,append的时候,如果长度增加后超过容量,则将容量增加2倍。

3、切片的截取

go 复制代码
package main

import "fmt"

func main() {
	s := []int{1,2,3}  //len = 3,cap =3, [1,2,3]
	s1 :=s[0:2]
	fmt.Println(s1)

	s1[0] = 100
	fmt.Println(s)
	fmt.Println(s1)

	
	//copy 可以将底层数组的slice一起进行拷贝
	s2 :=make([]int,3)
	//将s中的值依次拷贝到s2中
	copy(s2,s)
	fmt.Println(s2)

}
相关推荐
上弦月-编程6 分钟前
C语言位运算:从入门到精通
运维·c语言·开发语言·vscode·算法·leetcode·极限编程
minglie17 分钟前
c语言面向对象的led
c语言·开发语言
奇妙之二进制7 分钟前
fastdds源码分析之WriterListener
linux·开发语言·dds
小园子的小菜8 分钟前
生产实战|冷热数据转换:从识别、触发到落地全流程解析
java·开发语言·spring
zhangzeyuaaa9 分钟前
Python协程
开发语言·python
zhangzeyuaaa12 分钟前
Python多进程同步与共享内存完全指南:从Lock到分布式共享
开发语言·分布式·python
每天进步一点_JL18 分钟前
Spring 到底在做什么?从零开始理解 Java 企业开发的核心框架
后端·spring
꧁细听勿语情꧂20 分钟前
用队列实现栈、用栈实现队列,树、二叉树、满二叉树、完全二叉树,堆、向下向上调整算法、出堆入堆、堆排序
c语言·开发语言·数据结构·算法
每天进步一点_JL24 分钟前
Spring 【多实现切换 & 事务代理机制】深度解析
后端
彩票管理中心秘书长25 分钟前
MySQL 数据库高级与网络管理操作命令大全
后端