当前位置: 首页 > news >正文

go语言len函数差别

在 Go 语言里,len 函数在处理字符串时,返回的是字符串所占用的字节数,而非字符的数量。这一差异在处理包含多字节字符(像 UTF - 8 编码的中文、日文、韩文等字符)时尤为明显。

UTF - 8 编码规则

UTF - 8 是一种变长编码,不同字符占用的字节数有所不同:

  • 对于 ASCII 字符(如英文字母、数字和常见标点符号),每个字符占 1 个字节。
  • 对于大多数常见的汉字,每个字符占 3 个字节。
  • 某些特殊字符或表情符号可能占 4 个字节。

示例代码分析

以下代码展示了 len 函数对不同字符串的处理结果:

package main

import (
    "fmt"
)

func main() {
    // 包含 5 个 ASCII 字符的字符串
    asciiStr := "abcde"
    fmt.Printf("ASCII 字符串: %s, 长度: %d\n", asciiStr, len(asciiStr))

    // 包含 5 个汉字的字符串
    chineseStr := "测试数据!"
    fmt.Printf("中文 字符串: %s, 长度: %d\n", chineseStr, len(chineseStr))
}

代码解释

  • ASCII 字符串asciiStr 由 5 个 ASCII 字符构成,每个字符占 1 个字节,所以 len(asciiStr) 的结果是 5。
  • 中文 字符串chineseStr 包含 5 个汉字和 1 个标点符号,每个汉字通常占 3 个字节,标点符号可能占 1 或 3 个字节(取决于具体编码),所以 len(chineseStr) 的结果会大于 5。

获取字符数量的方法

若要获取字符串中字符的实际数量,可将字符串转换为 rune 切片,再计算切片的长度,示例如下:

package main

import (
    "fmt"
)

func main() {
    chineseStr := "测试数据!"
    runeSlice := []rune(chineseStr)
    charCount := len(runeSlice)
    fmt.Printf("中文 字符串: %s, 字符数量: %d\n", chineseStr, charCount)
}

总结

len 函数返回的是字符串占用的字节数,而非字符数量。在处理多字节字符时,要把字符串转换为 rune 切片来获取准确的字符数量。若输入的 5 个字符是多字节字符,len 函数返回 15 是合理的,因为每个字符可能占 3 个字节。

http://www.dtcms.com/a/102445.html

相关文章:

  • minecraft.service 文件配置
  • 关于OpenAI在React框架下搭建的项目雏形
  • Python的概论
  • 《新能源汽车 DEEA 平台开发策略》
  • 鲁大师单文件版
  • c++进阶之------哈希(开放寻址法)
  • 房地产数据可视化管理详细设计基于Spring Boot SSM原创
  • 剑指Offer(数据结构与算法面试题精讲)C++版——整数除法
  • 【Keepalived】Keepalived-2.3.3明确结束对CentOS 7的支持
  • 【蓝桥杯】第十四届C++B组省赛
  • git 常用操作整理
  • L1-083 谁能进图书馆(10分)(超详解)
  • 优化 ant-select(下拉数据太多)导致的页面卡顿问题
  • MPLAB X IDE 环境中配置字的注意点
  • python的sys中sys.argv 和 sys.exit() 用法
  • 数据层的基本操作
  • RKNN SDK User Guide学习要点
  • .NET 调用API创建系统服务实现权限维持
  • 实现ESP32woor连接deepseek进行访问
  • 【 <二> 丹方改良:Spring 时代的 JavaWeb】之 Spring Boot 中的安全性:使用 Spring Security 实现认证与授权
  • React 中的 Props
  • 文件操作与IO—文件读写
  • 开源手机号码价值评估系统
  • AI Agent系列(八) -基于ReAct架构的前端开发助手(DeepSeek)
  • Spring笔记04-注解注入
  • Python每日一题(11)
  • oracle执行计划
  • 《异常检测——从经典算法到深度学习》30. 在线服务系统中重复故障的可操作和可解释的故障定位
  • 42. 接雨水
  • Flutter敏感词过滤实战:基于AC自动机的高效解决方案