快速了解GO语言7 - 复合类型

快速了解GO语言7 - 复合类型

系统操作函数

  • 对数组,切片,集合均有效
    • len : 真实长度
    • cap : 最大长度
    • range : 用于for遍历

Array 数组

概念

  • 存储一组相同类型的数据结构
  • 数组有固定长度

数组操作

创建
var 数组名称 [数组长度] 数组类型 = {值1,值2}
使用
  • 通过索引访问数组元素
  • 备注
    • 数组比单一变量效率更高

多维数组

  • 多维数组是存储数组中的数组
  • 定义多维数组
var 数组名称 [数组长度][数组长度] 数据类型 ={{数组1值1,数组1值2},{数组2值1,数组2值2}}

slice 切片

概念

  • 切片是指向一个底层数组地址从而实现的无固定长度的数据类型,当其获得超出原有长度的扩容则抛弃原有地址,创建一个新的底层数组并指向其地址。
  • 无定长
  • 引用类型

切片操作

创建
//第一种方式
var 切片名称 [] 数据类型
//第二种方式
var 切片名称 = [] in {值1,值2}
//第三种方式:推荐
var 切片名称 = make([]int,已存储数据长度,最大存储量) //超过容量也不会溢出,会自动扩容

向切片后添加新的值

切片名称 = append(切片名称,值1,值2……);

将切片指向目标数组地址

//已有数组
a := [10] int {1,2,3,4,5,6,7,8,9,10}
//以下方法均可将数组赋值给切片
s1 := a[:5]     //将从数组从第一位截取到第5位赋值给切片s1,即1~5
s2 := a[3:7]    //将从数组从索引3截取到索引7(不包含末尾的下标)赋值给切片s2,即3~7
s3 := a[8:]     //将从数组从索引8截取到最后赋值给切片s3,即9~10
s4 := a[:]      //将数组全赋值给切片s4,即1~10
  • 备注
    • 这个操作非常危险,它并非赋值操作,实际上是将其地址的一部分范围或全部范围赋值给了切片,一旦任意一方发生改变,则对应位置上的另一方也会发生改变。

向切片中拷贝值

copy(目标切片,拷贝对象);

map 集合

概念

  • 以键值对的形式存储数据。
  • 是无序的,不能通过下标获得数据。
  • 无定长
  • 引用类型

操作集合

创建
//方法1:会创建一个nil的集合,不能直接使用。
var 集合名 map [键类型]值类型
//方法2
var 集合名 = make(map[键类型]值类型)
//方法3
var 集合名 = map[键类型]值类型{键1:值1,键2:值2……}

使用

变量1,变量2 := 集合名[键名]   //变量1会获得键对应的值,变量2会得到该键是否存在的信息

删除键值

delete(集合名[键名])

结构体 Struct

概念

  • 结构体实际上就是声明一个数据块的复合结构,是一系列具有相同或不同类型数据构成的集合。
  • 结构体的成员是由变量组成的,这些变量被称为字段,字段拥有自己的数据类型和数值,而且字段的名字必须是唯一的。
  • 类似其他语言的“类”,但是没有继承等相关方法。

操作结构体

创建

type 结构体名称 struct{
    数据名称 类型
}

使用

//第一种方法
var a = 结构体名称{与结构体内一致的赋值};  //如果没有赋值,就使用结构体内部默认赋值
a.数据名称
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值