【Go】探索 Go 语言的内建函数 len


山水间歌声回荡
回荡思念的滚烫
去年的家书两行
读来又热了眼眶
云水边静沐暖阳
烟波里久违的故乡
别来无恙
你在心上
                     🎵 张靓颖/张杰《燕归巢》


在 Go 语言中,len 是一个非常常用的内建函数,它用于获取各种数据类型的长度或大小。掌握 len 的使用方法,可以帮助我们更高效地处理数据结构。本文将详细介绍 len 函数的使用场景和示例。

len 函数的使用场景

len 函数可以用于以下几种数据类型:

  • 数组(array)
  • 切片(slice)
  • 字符串(string)
  • 映射(map)
  • 通道(channel)

数组和切片中的 len

对于数组和切片,len 函数返回元素的个数。

package main

import "fmt"

func main() {
    // 数组示例
    arr := [5]int{1, 2, 3, 4, 5}
    fmt.Println("数组长度:", len(arr)) // 输出:数组长度: 5

    // 切片示例
    slice := []int{1, 2, 3, 4, 5}
    fmt.Println("切片长度:", len(slice)) // 输出:切片长度: 5
}

字符串中的 len

对于字符串,len 函数返回字节的个数,而不是字符的个数。这在处理多字节字符(如中文)时需要特别注意。

package main

import "fmt"

func main() {
    str := "Hello, 世界"
    fmt.Println("字符串长度(字节数):", len(str)) // 输出:字符串长度(字节数): 13
}

映射中的 len

对于映射,len 函数返回键值对的数量。

``go
package main

import “fmt”

func main() {
m := map[string]int{“a”: 1, “b”: 2, “c”: 3}
fmt.Println(“映射长度:”, len(m)) // 输出:映射长度: 3
}

# 通道中的 len
对于通道,len 函数返回当前缓冲区中未读取元素的数量。注意,只有带缓冲区的通道才有这个意义。

```go
package main

import "fmt"

func main() {
    ch := make(chan int, 5)
    ch <- 1
    ch <- 2
    fmt.Println("通道长度:", len(ch)) // 输出:通道长度: 2
}

使用 len 函数的注意事项

  • 字符与字节:对于字符串,len 返回的是字节数而不是字符数。如果需要获取字符数,可以使用 utf8.RuneCountInString 函数。
  • 动态长度:切片、映射和通道的长度是动态的,可以在运行时改变,因此 len 返回的值也会随之变化。
  • 性能考虑:len 函数是一个常数时间操作,即使对于映射和通道也是如此,因为它们内部维护了长度信息。

总结

len 是 Go 语言中一个简单但功能强大的内建函数,它可以帮助我们轻松获取数据结构的长度或大小。无论是数组、切片、字符串、映射还是通道,len 都能快速、准确地返回所需的信息。在编写 Go 代码时,充分利用 len 函数可以提高代码的可读性和效率。

希望这篇博客能帮助你更好地理解和使用 Go 语言中的 len 函数。Happy coding!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值