【Go】小灰灰的数据结构

本文介绍了Go语言中的数据结构,包括数组和切片的特性,如数组的固定长度和切片的变长以及它们之间的关系,强调了切片对数组的引用以及排序时对原数组的影响。接着讲解了map的无序key-value特性。最后探讨了container包中的list(双向链表)、ring(环形链表)和heap(最小堆)的实现,强调了heap包在创建优先队列中的作用,并提醒了使用heap接口时需要注意的细节。
摘要由CSDN通过智能技术生成

1 数组和切片

数组,固定长度,长度也是其类型;
切片,变长,初始化长度需要make,配合append使用

数组

func xhhArray()  {
   
	// int 默认0   string 默认""  bool 默认false
	var arr [5]int
	// len(arr)=5  cap(arr)=5  arr=[0 0 0 0 0]
	fmt.Printf("len(arr)=%d  cap(arr)=%d  arr=%v\n",
		len(arr), cap(arr), arr)
}

切片

func xhhSlice() {
   
	// [1] 初始化空的
	var sli1 []int
	// len(sli1)=0  cap(sli1)=0  sli1=[]
	fmt.Printf("len(sli1)=%d  cap(sli1)=%d  sli1=%v\n",
		len(sli1), cap(sli1), sli1)
	// 添加一个元素
	sli1 = append(sli1, 11)
	fmt.Printf("len(sli1)=%d  cap(sli1)=%d  sli1=%v\n",
		len(sli1), cap(sli1), sli1)


	// [2] 初始化 长度为5空间为5   [make([]int, 5, 10):长度为5空间为10]
	//sli2 := make([]int, 5)
	sli2 := []int{
   11, 22, 33, 44, 55}
	// len(sli2)=5  cap(sli2)=5  sli2=[0 0 0 0 0]
	fmt.Printf("len(sli2)=%d  cap(sli2)=%d  sli2=%v\n",
		len(sli2), cap(sli2), sli2)

	// 移除第0个元素 -> sli2 = sli2[1:]
	// 移除第1个元素 -> sli2 = append(sli2[:1], sli2[2:]...)
	// 移除最后一个元素
	sli2 = sli2[:len(sli2)-1]
	fmt.Printf("len(sli2)=%d  cap(sli2)=%d  sli2=%v\n",
		len(sli2), cap(sli2), sli2)
	
	/*
		len(sli1)=0  cap(sli1)=0  sli1=[]
		len(sli1)=1  cap(sli1)=1  sli1=[11]
		len(sli2)=5  cap(sli2)=5  sli2=[11 22 33 44 55]
		len(sli2)=4  cap(sli2)=5  sli2=[11 22 33 44]
	 */
}

数组和切片

切片引用数组时,当切片不扩容时,修改的是数组的值,否则底层引用了新的数组

func xhhArrAndSlice()  {
   
	// [1] 数组
	strs := [3]string{
   "xhh", "mcy", "abc"}
	fmt.Printf("len(strs)=%d  cap(strs)=%d  strs=%v\n",
		len(strs)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值