在 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
相关文章:
整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?
北京专业网站制作设计师招聘,北京白云观官方网站?
企业宣传片制作网站有哪些,传媒公司怎么找企业宣传片项目?
如何配置IIS站点权限与局域网访问?
如何在IIS服务器上快速部署高效网站?
如何做网站制作流程,*游戏网站怎么搭建?
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
建站之星2.7模板:企业网站建设与h5定制设计专题
如何通过PHP快速构建高效问答网站功能?
IOS倒计时设置UIButton标题title的抖动问题
建站之星微信建站一键生成小程序+多端营销系统
香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧
打鱼网站制作软件,波克捕鱼官方号怎么注册?
南京做网站制作公司,南京哈发网络有限公司,公司怎么样,做网页美工DIV+CSS待遇怎么样?
建站之星伪静态规则如何设置?
php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】
西安大型网站制作公司,西安招聘网站最好的是哪个?
股票网站制作软件,网上股票怎么开户?
广州美橙建站如何快速搭建多端合一网站?
平台云上自助建站如何快速打造专业网站?
,在苏州找工作,上哪个网站比较好?
建站之星安装后如何配置SEO及设计样式?
网站制作报价单模板图片,小松挖机官方网站报价?
c++怎么使用类型萃取type_traits_c++ 模板元编程类型判断【方法】
制作充值网站的软件,做人力招聘为什么要自己交端口钱?
北京网站制作的公司有哪些,北京白云观官方网站?
建站主机系统SEO优化与智能配置核心关键词操作指南
如何登录建站主机?访问步骤全解析
如何在IIS中新建站点并配置端口与IP地址?
如何高效配置香港服务器实现快速建站?
沈阳制作网站公司排名,沈阳装饰协会官方网站?
如何选择靠谱的建站公司加盟品牌?
在线教育网站制作平台,山西立德教育官网?
如何在香港免费服务器上快速搭建网站?
网站制作模板下载什么软件,ppt模板免费下载网站?
学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?
如何通过宝塔面板实现本地网站访问?
如何在云服务器上快速搭建个人网站?
太原网站制作公司有哪些,网约车营运证查询官网?
番禺网站制作公司哪家值得合作,番禺图书馆新馆开放了吗?
网站制作培训多少钱一个月,网站优化seo培训课程有哪些?
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
制作网页的网站有哪些,电脑上怎么做网页?
如何打造高效商业网站?建站目的决定转化率
如何选购建站域名与空间?自助平台全解析
定制建站流程步骤详解:一站式方案设计与开发指南
建站之星好吗?新手能否轻松上手建站?
如何高效配置IIS服务器搭建网站?
建站之星安装步骤有哪些常见问题?
*请认真填写需求信息,我们会在24小时内与您取得联系。