15

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

 4 years ago
source link: https://studygolang.com/articles/26198
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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

本文适合人群

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

值类型和引用类型

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

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

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

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

数组和切片slice

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

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK