在 Go 中,判断切片长度和容量最直接的方式是使用 len() 和 cap();若类型未知,则需用 reflect.Value 的 Len() 和 Cap() 方法,并注意 nil 切片和类型校验等陷阱。
在 Go 中,判断切片的长度和容量最直接的方式是使用内置函数 len() 和 cap()。但如果你需要在运行时对任意类型(比如通过接口或反射)进行动态检查,reflect.Value 就是关键工具。
对已知类型的切片,无需反射:
len(s) 返回当前元素个数(逻辑长度)cap(s) 返回底层数组从切片起始位置开始可用的最大元素数(容量)例如:
s := make([]int, 3, 5) // 长度3,容量5 fmt.Println(len(s), cap(s)) // 输出:3 5
当切片作为 interface{} 传入、或类型未知时,需用反射安全提取信息:
r
eflect.ValueOf(v) 获取值对象kind() == reflect.Slice
Len() 和 Cap() 方法(注意大小写,反射方法首字母大写)示例:
func inspectSlice(v interface{}) (length, capacity int) {
rv := reflect.ValueOf(v)
if rv.Kind() != reflect.Slice {
return 0, 0
}
return rv.Len(), rv.Cap()
}
s := []string{"a", "b"}
l, c := inspectSlice(s) // l=2, c=2
使用反射时容易出错的地方:
reflect.ValueOf(nil) 的 Kind() 是 reflect.Invalid,不是 reflect.Slice,需先判空reflect.Value.Len() 对非 slice/map/array 类型 panic,务必先 Kind() 校验更健壮的反射判断方式:
func safeSliceInfo(v interface{}) (ok bool, length, capacity int) {
rv := reflect.ValueOf(v)
if rv.Kind() == reflect.Slice {
return true, rv.Len(), rv.Cap()
}
if rv.Kind() == reflect.Ptr && !rv.IsNil() {
elem := rv.Elem()
if elem.Kind() == reflect.Slice {
return true, elem.Len(), elem.Cap()
}
}
return false, 0, 0
}
该函数支持直接传切片或指向切片的指针,也兼容 nil 指针保护。
# go
# golang
# 工具
# Array
# 结构体
# 指针
# 接口
# Interface
# 切片
# len
# cap
# nil
# map
# 对象
# kind
# 如果你
# 能对
# 先用
# 则需
# 需用
# 首字母
# 或已
# toolbar
# fmt
# int
相关文章:
建站主机选购指南:核心配置与性价比推荐解析
宝塔建站后网页无法访问如何解决?
家庭服务器如何搭建个人网站?
建站之星如何配置系统实现高效建站?
交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?
jQuery 常见小例汇总
制作网页的网站有哪些,电脑上怎么做网页?
建设网站制作价格,怎样建立自己的公司网站?
Python lxml的etree和ElementTree有什么区别
清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?
利用JavaScript实现拖拽改变元素大小
开心动漫网站制作软件下载,十分开心动画为何停播?
如何用AWS免费套餐快速搭建高效网站?
佛山网站制作系统,佛山企业变更地址网上办理步骤?
如何用低价快速搭建高质量网站?
清除minerd进程的简单方法
济南网站制作的价格,历城一职专官方网站?
建站之星免费版是否永久可用?
建站主机核心功能解析:服务器选择与网站搭建流程指南
如何选择高效稳定的ISP建站解决方案?
制作营销网站公司,淘特是干什么用的?
如何在宝塔面板中创建新站点?
如何使用Golang table-driven基准测试_多组数据测量函数效率
深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?
如何高效利用亚马逊云主机搭建企业网站?
Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递
弹幕视频网站制作教程下载,弹幕视频网站是什么意思?
如何通过wdcp面板快速创建网站?
建站主机CVM配置优化、SEO策略与性能提升指南
如何破解联通资金短缺导致的基站建设难题?
如何快速建站并高效导出源代码?
香港服务器网站卡顿?如何解决网络延迟与负载问题?
安徽网站建设与外贸建站服务专业定制方案
建站之星2.7模板快速切换与批量管理功能操作指南
怎么将XML数据可视化 D3.js加载XML
宝塔新建站点为何无法访问?如何排查?
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
建站之星与建站宝盒如何选择最佳方案?
北京的网站制作公司有哪些,哪个视频网站最好?
建站之星免费模板:自助建站系统与智能响应式一键生成
无锡营销型网站制作公司,无锡网选车牌流程?
Swift中switch语句区间和元组模式匹配
外贸公司网站制作,外贸网站建设一般有哪些步骤?
建站之星备案流程有哪些注意事项?
建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析
红河网站制作公司,红河事业单位身份证如何上传?
手机怎么制作网站教程步骤,手机怎么做自己的网页链接?
在线制作视频的网站有哪些,电脑如何制作视频短片?
建站之星上传入口如何快速找到?
高端建站如何打造兼具美学与转化的品牌官网?
*请认真填写需求信息,我们会在24小时内与您取得联系。