Go学习笔记-遍历字符串

Go学习笔记-遍历字符串

示例及坑点:

package main

import "fmt"

func main() {

	var a = "Are you OK ? 雷布斯"

	for i := 0; i < len(a); i++ {
		fmt.Printf("%c \n", a[i])
	}

}


PS E:\go_code\src\note> go run .\string_cycle.go
A 
r 
e 
  
y 
o 
u 
  
O 
K 
  
? 
  
é 

· 
å 
¸

æ

¯

如上所示,中文部分会出现乱码。原因是遍历方法是按照字节来遍历的,而一个汉字在utf-8编码中对应3个字节。

解决如下:

package main

import "fmt"

func main() {

	var a = "Are you OK ? 雷布斯"
	var b = []rune(a)

	for i := 0; i < len(b); i++ {
		fmt.Printf("%c \n", b[i])
	}

}

PS E:\go_code\src\note> go run .\string_cycle.go
A
r
e

y
o
u

O
K

?

雷
布
斯

或者for-range方式遍历(按照字符方式遍历),如下:

package main

import "fmt"

func main() {

	var a = "Are you OK ? 雷布斯"

	for idx, val := range a {
		fmt.Printf("%d=>%c \n", idx, val)
	}

}

PS E:\go_code\src\note> go run .\string_cycle.go
0=>A
1=>r
2=>e
3=>
4=>y
5=>o
6=>u
7=>
8=>O
9=>K
10=>
11=>?
12=>
13=>雷
16=>布
19=>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值