go基础第一篇:常用语法
在用for...range遍历string时,第一个参数是字符索引,可能不是连续的,第二个参数是int32类型,即rune类型,rune是int32的别名,第二个参数的值是该字符在unicode字符集中对应的码点,如果字符是中文,那么第二个参数的值将大于255。rune其实就是字符。可以直接用string()包裹起来,把码点转成字符。
在用for i := 0; i < len(s); i++遍历string时,索引i是连续的,s[i]是uint8类型,即byte类型,byte是uint8的别名。
func main() { s := "广东" f1(s) fmt.Println("-----------------------------") f2(s) } func f1(s string) { for i, b := range s { fmt.Printf("%v\n", i) fmt.Printf("%v\n", b) } } func f2(s string) { for i := 0; i < len(s); i++ { b := s[i] fmt.Printf("%v\n", i) fmt.Printf("%v\n", b) } }
f1函数用for...range遍历字符串,当字符串含中文时,i将不连续。
f2函数用for i := 0; i < len(s); i++遍历字符串,即使字符串含中文,i也会连续,s[i]<=255。
浙公网安备 33010602011771号