Contents

Golang中的string、rune和byte

Contents

Go 语言中的 byte 和 rune 实际上是 uin8 和 int32 类型

  • byte 一般来表示一些原始数据(如网络中的数据传输)
  • rune 则用来表示 Unciode 字符

在 go 中 string 的底层用的就是 byte 字节数组存储的,它的遍历有两种情况

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
package main
import (
    "fmt"
)
func main() {
    s := "abc汉字"

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

    fmt.Println()

    for _, r := range s {
        fmt.Printf("%c,", r)
    }
}

// 结果
// a,b,c,æ,±,,å,­,,
// a,b,c,汉,字,

想获取字符串中的字符个数需要转换 []rune 数组,获取中文字符下标同理

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
package main

import (
  "fmt"
)

func main() {
  s := "你好世界"
  fmt.Println(len(s))
  fmt.Println(len([]rune(s)))
}

// 结果
// 12
// 4