Go入门(三)-Go基础(二)

导读:本文介绍Go的数组类型,slice类型,map类型,以及相关的一些内置函数。

3.4.4 数组类型
1 数组的定义,赋值方式如下:

2 多维数据的定义

3.4.5 slice类型
在java中数组类型的长度一旦确定,是不可更改的,而在Go,slice是一种动态数组,长度可变。slice其实是一种引用类型,指向一个底层的array。
3.4.5.1 声明方式和array一样,但是不需要指定长度;
3.4.5.2 初始化可从已有的数组截获取,可以重新赋值;
3.4.5.3 slice有默认的起始取值位置arr[0]和默认的长度len(arr);

3.4.5.4 slice实际上有三个变量的结构体(struct),一个是指针int*,指向数组的起始位置,一个是长度len,一个是容量cap;

通过ide的调试功能,我们可以看到以下信息:

存储结构如下所示;

3.4.5.5 slice有4个内置函数,len(slice),cap(slice),append(slice,11,12,13),copy(slice,bslice),具体用户如下,make是指分配一块内存,如果只是定义个空的slice,是无法进行copy操作的,通过以下测试,我们可以知道,在进行append操作时,slice在长度不足时,会增加一倍的容量;

3.4.6 map类型
map是一种无序的键值对的集合,通过key来检索数据,声明方式:map[keyType]valueType,看上去跟数组差不多。

3.4.6.1 map是无序的,每次打印的map的都不一样;
3.4.6.2 map长度不是固定的,和slice一样,是一种引用类型;
3.4.6.3 内置函数len(map)同样适合map;
3.4.6.4 删除操作,通过delete(map,key)函数完成;

3.4.7 make、new操作
make用于内建类型map、slice 和channel(后面会详讲)的内存分配。new用于各种类型的内存分配。make返回一个有初始值(非零)的T类型,new(T)返回了一个指针,*T类型,指向新分配的类型T的零值。

Have fun!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值