Go语言快速入门笔记(2)--值类型和引用类型,silce切片,map映射

无知影 · · 152 次点击 · · 开始浏览    

内容速览

本文包含Go语言的简单入门语法,值类型和引用类型,silce切片,map映射

本文适合人群

具有一定编程语言基础(如:C/C++,java等),并且想要快速入门Go语言的同学

值类型和引用类型


值类型:直接对值操作的类型,包括

1.基本数据类型(int,float等)
2.struct结构体
3.数组
复制代码

引用类型:通过指针(引用)对内存单元操作的类型,包括

1.silce切片
2.map映射
3.其他容器
复制代码

数组和切片slice


  • 声明:
    //一维数组
    格式1var 数组名 [长度] 类型
    格式2:[var 数组名 =]/[数组名 := ] [长度]类型{值1,值2,...}
    格式3:[var 数组名 =]/[数组名 := ] [...]/[]类型{值1,值2,...}
    //多维数组
    格式4var 数组名 = [长度][长度]...类型{{值1,值2,...},{值1,值2,...},...}
    格式5var 数组名 = [][]...类型{{值1,值2,...},{值1,值2,...},...}
    复制代码
    • 注意:缺省的数组即为切片
  • 索引:
    • 下标索引:数组名[下标]
      • 注意:超过长度的部分不可索引,尽管容量有余
    • 切片索引:数组名[start:end],取出[start,end)的元素
  • len()方法和cap()方法
    • len():计算长度,即当前容器使用单元数
    • cap():计算容量,即当前容器最大单元数
  • make()方法:声明切片
    • make([]类型, len, cap):参数分别为切片类型,长度,容量(缺省时默认等于长度)
  • append()方法:复制一份切片并添加元素,超出容量自动扩容(容量=长度*2
    • append([]类型, elem1, elem2, ... )
    • append([]类型, 切片)
  • 注意:
    • 数组的复制操作是深拷贝,要转浅拷贝请在复制时在数组名前使用&取地址
    • 数组的比较操作是比较其内容是否一致而不是地址是否一致
    • 数组是一个值类型,就是数据内容本身
    • 切片是一个引用类型,本质是一个数组的引用

映射map


  • 声明:

    var 映射名 map[keytype]valuetype
    var 映射名 = map[keytype]valuetype{k:v, ... }
    映射名 := map[keytype]valuetype{k:v, ... }
    make(map[keytype]datatype)
    复制代码
  • 增删改查

    1、增:
    	map[key] = value
    2、删
    	delete(map, key)
    3、改
    	map[key] = value
    4、查
    	val = map[key]
    	val, ok = map[key]	//ok(boolean)检测取值是否真实存在
    复制代码

Go语言快速入门笔记系列传送门


Go语言快速入门笔记(1)--变量var,分支if else,循环for,fmt简单输入输出

Go语言快速入门笔记(2)--值类型和引用类型,silce切片,map映射

Go语言快速入门笔记(3)--函数,指针,srtuct结构体,interface接口,Error错误,panic恐慌和recover恢复

本文来自:掘金

感谢作者:无知影

查看原文:Go语言快速入门笔记(2)--值类型和引用类型,silce切片,map映射

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:muxilin131420 备注:入群;或加QQ群:977810755

152 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传