Go语言

存储结构:

  1、切片

    切片是Go中重要的数据类型,每个切片对象内部都维护着:数组指针(切片的地址)、切片长度、切片容量三个数据

    

      

 

长度是目前存储的数量,容量是最大存储数量

    在向切片中追加的数据个数大于容量时,内部会自动扩容且每次扩容都当前容量的两倍(当容量超过1024时每次扩容则只增加当前容量的1/4容量),注意扩容之后地址会改变

       

        

    

      var users = make([]int,2,5) //三个参数,第一个是切片的数据类型,第二个是初始化长度(刚开始存储的默认几个数据),第三个是容量(推荐)
           v3 := append(users,99) //指向的地址是一样的,但len不同,所以修改V3第一个数据users也会变
    往一个切片里面添加一个数据

        

切片的常见操作:

  长度和容量:

    len(v1)\cap(v1)

  索引:

    根据长度确定索引,根据索引获取值并且可以修改值

    

············

     切片:切片得到的切片的内部数据地址是一致的

    v2 := v1[1:3]

   追加:append

   

      

   删除:

  //切片取前几位的时候地址是相同的

  //但是后面赋值相当于给后面的覆盖掉了,所以v1也变了,但删除一位之后相当于最后会有重复的值

       

    插入:

  

      

    但是这种插入效率低下,所以插入操作尽可能不要用切片,用链表或者循环

  变量赋值:

    这种地址是不同的

  整型、布尔类型、浮点型、字符串:

    赋值也是重新开辟内存存储数据

   数组:也是重新开辟内存,修改一者另一者不变

    

  切片虽然地址不同,但是他内部存储的指针依然指向的是同一块地址,但是如果扩容的话就会重新开辟区域了

     

    

   所以,目前学到的数据类型中,只有切片在修改内部元素时,会造成所有的赋值变量同时修改(不扩容的情况下)

   切片和数组的区别:

    切片修改数据时会导致所有赋值变量同时修改,且切片会自动扩容,数组在声明的时候容量定死了

 

Map(字典)类型:

  键值对

    这种类型最大的特点就是查找速度非常快,因为她的底层存储是基于哈希表存储的  (哈希表是取模+拉链法共同作用的)

   特点:

    键不能重复、键必须可哈希(目前所学习的可以哈希的有:int/bool/string/array)、无序

  声明&初始化:

    

      

      

    

  另外,键也可以是数组

       

  常见操作:

    长度:len 

     容量:cap会报错,因为容量是会重新计算的

        但是容量在你刚开始设置上的时候,会计算出合适的容量(所以设置的容量并不一定是最终的容量

    增删改查:

      

     

    嵌套:

      value中的嵌套:

       

        

    key中的嵌套:

       (键不重复,键可哈希)

      

map原理:整体存储结构

        

   

 

 

 

    

 

 

 

 

 

 

 

 

 

 

    

 

posted @   机器智能小白凡  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
点击右上角即可分享
微信分享提示