golang2021数据格式(93)获取slice与map长
获取slice长度
通过前面关于slice的文章,我们知道了sliceheader的结构体定义:
1hr2
3
4
5
6
runtimeslice。go
typeslicestruct{
arrayunsafe。Pointer元素指针
lenint长度
capint容量
}
调用make函数新建一个slice,底层调用的是makeslice函数,返回的是slice结构体:
1hrfuncmakeslice(ettype,len,capint)slice
因此我们可以通过unsafe。Pointer和uintptr进行转换,得到slice的字段值。
1hr2
3
4
5
6
7
8funcmain(){
s:make(〔〕int,9,20)
varLen(int)(unsafe。Pointer(uintptr(unsafe。Pointer(s))uintptr(8)))
fmt。Println(Len,len(s))99
varCap(int)(unsafe。Pointer(uintptr(unsafe。Pointer(s))uintptr(16)))
fmt。Println(Cap,cap(s))2020
}
Len,cap的转换流程如下:
1hr2
Len:spointeruintptrpointerintint
Cap:spointeruintptrpointerintint
获取map长度
再来看一下上篇文章我们讲到的map:
1
2
3
4
5
6
7
8
9
10
11
12
13typehmapstruct{
countint
flagsuint8
Buint8
noverflowuint16
hash0uint32
bucketsunsafe。Pointer
oldbucketsunsafe。Pointer
nevacuateuintptr
extramapextra
}
和slice不同的是,makemap函数返回的是hmap的指针,注意是指针:
1hrfuncmakemap(tmaptype,hintint64,hhmap,bucketunsafe。Pointer)hmap
我们依然能通过unsafe。Pointer和uintptr进行转换,得到hamp字段的值,只不过,现在count变成二级指针了:
1hr2
3
4
5
6
7
8funcmain(){
mp:make(map〔string〕int)
mp〔qcrao〕100
mp〔stefno〕18
count:(int)(unsafe。Pointer(mp))
fmt。Println(count,len(mp))22
}
count的转换过程:
1hrmppointerintint
机器人能产生自己的文明吗?首先我们要明白人类文明产生的过程和内涵,就不难理解机器人文明的产生。人类文明产生,有的理论说产生于劳动,有的说产生于使用工具,等等。从现在对动物观察,有的动物会使用火,有……
国产手机何时才能从苹果手里夺回高端市场?只要华为解决了芯片问题就可以了!苹果的成功短期内难以复制,其洋品牌的身份给其加分不少。国内最接近的品牌是华为,可惜华为被美国无理由的制裁。小米OV之流的一年发布几十上百款……
腾讯的势力有多大?腾讯:孩儿们,出来露个脸QQ:到!微信:到!腾讯游戏:到!腾讯视频:到!QQ音乐:到!酷狗音乐:到!阅文集团:到!微众银行:到!……
有没有一种软件可以导入文字输出语音的?要说文字转语音,收费的有很多,但免费的很少,目前我仅发现有两款真正免费的。下面是免费和收费两个方向大致介绍:01免费1。1炫勇文字转成语音生成器炫勇文字转成语音生成……
AirPods2评测你看不见的4个升级点击下方观看AirPods评测文字版现在新一代出了。准确来说,2019年的这一款,它应该还是叫AirPods,只是为了体现区别,才加了个括号第二代。因为……
ETEST12奇瑞新能源蚂蚁电耗测试试驾体验作为代表奇瑞新能源最新技术的车型,蚂蚁无论内在还是外在都有着一定的提升。基于LIFE平台打造、采用了全铝车身、自然美学设计理念是蚂蚁这款车的几个关键词,而除了这些,电耗也是官方……
iOS15betaRC系统已出,下周正式版在9月15日凌晨时段,苹果推送五个系统:iOS15。0betaRC(19A344)手机iPadOS15。0betaRC(19A344)平板tvOS15。0betaRC(19J3……
百强榜第一!华为蝉联中国先进计算企业,四大领域独占鳌头华为再夺第一!近日,2021年世界计算大会上,华为凭借在硬件、软件、基础设施和服务四大领域的强大实力,继续蝉联中国先进计算企业百强榜榜首。本次参会的同领域企业多达3……
2021年最佳可折叠手机排行榜目前最好的5款折叠手机,不服来哈喽,您好!我是原呵呵,点点关注吧,更多精彩内容等着您即使按照手机标准,最好的可折叠手机也不便宜,因此我已经列出了最好的可折叠手机,做个一个排行榜,供您参考。自从R……
你还记得自己家是什么时候买的第一台电视机,是什么牌子的?这我记得非常清楚。1985年的冬天,我从单位的一位老同志手里买了他家二手的东芝12吋黑白电视机,这台电视可是原装的。那些年,这台黑白电视机成为我们全家最珍贵的大件了。至今……
SSH客户端推荐随着国内版权的问题,很多优秀的软件不付费,继续使用,将面临法律责任。那么有没有可以完美替代xshell的ssh客户端工具?很可惜没有。但是有相对做的比较好的,未来可期。目前主流……
麒麟芯片不是华为自主研发的吗?为什么会被美国断供?华为有多牛?麒麟芯片当然是华为自主研发的。麒麟芯片的设计部分是华为自主研发,制造部分属于重资产领域,不但需要相当大的投资,还有技术和设备(光刻机)等因素。就连……