Golang遍历字符串输出中文乱码的解决方案

 更新时间:2026年06月22日 09:32:40   作者:king110108  
Golang遍历字符串输出中文不乱码的方法,介绍for...range和切片[]rune(str)两种有效解决方式

Golang遍历字符串输出中文乱码

Golang输出字符串有两种方式,一种是传统方式输出,另一种是用for...range输出(类似字典键值对的方式)。

但是Golang中所有的字符都是以utf-8编码存储的,对于中文字符来说,一个中文字符占3个字节。

用传统方式输出的话会出现中文乱码,原因是传统方式是以字节的方式进行遍历的,而中文字符占了3个字节。

解决的办法

使用切片[]rune(str)转换一下;而用for...range不会出现乱码。

我们直接看代码:

func traverseStrings() {
	//方式一:传统方法
	var str string = "hello,world!北京"
	str_cpy := []rune(str) //就是把str转成切片[]rune(str),可以解决字符串的中文乱码(中文字符是占3个字节)
	for i := 0; i < len(str_cpy); i++ {
		fmt.Printf("%c\n", str_cpy[i])
	}
	//方式二:for..range
	str1 := "ABCDEFG上海"
	//用这种方式不会出现乱码
	for index, val := range str1 {
		fmt.Printf("index = %d, val = %c \n", index, val)
	}
}

用传统方式输出结果为:

用for...range方式输出结果为:

从图中我们也可以看出“上”占了3个字节。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • golang实现RPC模块的示例

    golang实现RPC模块的示例

    本文详细介绍了在Go语言中如何实现RPC模块,包括RPC服务端和客户端的构建及代码实现,同时提到了使用JSON-RPC的方法,通过简单的步骤,可以实现跨进程的远程过程调用,感兴趣的可以了解一下
    2024-09-09
  • golang实现数组分割的示例代码

    golang实现数组分割的示例代码

    本文主要介绍了golang实现数组分割的示例代码,要求把数组分割成多个正整数大小的数组,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • Go 语言中控制协程数量的常用方法小结

    Go 语言中控制协程数量的常用方法小结

    本文介绍了Go语言中四种控制协程数量的常用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-11-11
  • Go语言使用WaitGroup等待多个协程完成

    Go语言使用WaitGroup等待多个协程完成

    sync.WaitGroup是Go标准库中的一个结构体,用于等待一组goroutine执行完成,本文就来介绍一下Go语言使用WaitGroup等待多个协程完成,感兴趣的可以了解一下
    2026-02-02
  • GoFrame错误处理常用方法及错误码使用示例

    GoFrame错误处理常用方法及错误码使用示例

    这篇文章主要为大家介绍了GoFrame错误处理常用方法及错误码使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • VsCode搭建Go语言开发环境的配置教程

    VsCode搭建Go语言开发环境的配置教程

    这篇文章主要介绍了在VsCode中搭建Go开发环境的配置教程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • Golang的继承模拟实例

    Golang的继承模拟实例

    这篇文章主要介绍了Go语言使用组合的方式实现多继承的方法,实例分析了多继承的原理与使用组合方式来实现多继承的技巧,需要的朋友可以参考下,希望可以帮助到你
    2021-06-06
  • 详解golang执行Linux shell命令完整场景下的使用方法

    详解golang执行Linux shell命令完整场景下的使用方法

    本文主要介绍了golang执行Linux shell命令完整场景下的使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • golang 内存对齐的实现

    golang 内存对齐的实现

    在代码编译阶段,编译器会对数据的存储布局进行对齐优化,本文主要介绍了golang 内存对齐的实现,具有一定的参考价值,感兴趣的可以了解一下
    2024-08-08
  • 详解go中的defer链如何被遍历执行

    详解go中的defer链如何被遍历执行

    为了在退出函数前执行一些资源清理的操作,例如关闭文件、释放连接、释放锁资源等,会在函数里写上多个defer语句,多个_defer 结构体形成一个链表,G 结构体中某个字段指向此链表,那么go中的defer链如何被遍历执行,本文将给大家详细的介绍,感兴趣的朋友可以参考下
    2024-01-01

最新评论