Go语言中获取数组与切片长度的方法对比

叶初
叶初
发布时间:2026-10-14 | 4人浏览过
原创

在Go语言编程中,经常需要知道数据集合的大小。无论是静态类型的数组还是动态增长的切片,获取其长度的标准做法都是使用内置的 len 函数。本文将分别展示这两种常见数据结构获取长度的具体实现与区别。

为什么获取长度是必要的?

在处理数据时,了解元素的总数对于循环遍历、内存预分配或逻辑判断至关重要。许多初学者容易混淆“数组长度固定”与“切片长度可变”的概念,但有趣的是,无论哪种结构,Go语言都提供了统一的 len 函数来返回元素个数。

获取数组长度的操作

数组(Array)是Go中的值类型,其长度在定义时就被确定并包含在类型定义中。这意味着你不能改变已声明数组的长度,但你可以通过 len 函数随时查询它。

第1步:定义一个固定长度的数组

数组的语法格式为 [N]Type,其中 N 必须是常量表达式。例如,创建一个包含3个整数的数组:

// getting the length of an array is silly, because the length is part of the array's static type
myArray := [3]int{1, 2, 3}
fmt.Println(len(myArray)) // prints 3

第2步:调用 len 函数

直接传入数组变量名即可。由于长度是类型的一部分,编译器在编译期就能确定这个值,因此运行时的开销极小。上述代码将输出 3。

获取切片长度的操作

切片(Slice)是对数组的抽象,底层引用一个数组。切片的长度表示其当前可见的元素数量,并且可以随着底层数组的变化而变化(例如使用 append 函数后)。与数组不同,切片的长度不是其类型的一部分,而是运行时信息。

第1步:创建一个切片

可以使用字面量或直接截取数组来创建切片。例如,创建一个包含3个整数值的切片:

// getting the length of a slice
mySlice := []int{1, 2, 3}
fmt.Println(len(mySlice)) // prints 3

第2步:调用 len 函数

同样使用 len 函数。需要注意的是,如果你向切片追加元素,len 的返回值也会随之增加:

mySlice = append(mySlice, 4)
fmt.Println(len(mySlice)) // prints 4

关键差异总结

  • 数组:长度固定,包含在类型中。定义时必须指定长度,如 [5]int。
  • 切片:长度可变,不包含在类型中。定义时只需指定元素类型,如 []int。

尽管两者在语义和灵活性上有显著区别,但在获取当前元素个数这一操作上,完全一致:使用 len()。

简要总结

在Go语言中,无论是处理固定大小的数组还是动态的切片,获取其元素数量的最佳实践始终是使用内置的 len 函数。理解数组长度不可变而切片长度可变的特性,有助于编写更高效、更符合Go语言习惯的代码。以上就是Go语言获取数组长度的详细内容,更多关于Go语言len函数及切片操作的资料请关注本站其它相关文章!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表