Go 语言的字符类型

字符类型在工作中也会非常频繁地用到,是一个非常重要的数据类型。本文主要介绍了 Go 语言中处理字符和字符串的数据类型。

 

1. 字符和字符串类型

序号 类型 说明
1 byte uint8 类型的别名,同等于 uint8。一般用于表示 ASCII 字符,即只能操作简单的字符,不支持中文操作
2 rune int32 类型的别名,同等于 int32。一般用于表示 Unicode 字符,即可以处理任何字符
3 string 一个指向 byte 数组的指针,可以为空字符串不可为nil

 

2. 代码演示

接下来使用一段代码来更清晰地解释byterune的区别,以及了解这三个类型的关系。

代码块
  • 1  package main
  • 2
  • 3  import "fmt"
  • 4
  • //将字符串转换为rune的数组,并替换数组第i个元素为ch
  • 6  func str2Rune(str *string, i int, ch rune) {
  • 7        temp := []rune(*str)
  • 8        temp[i] = ch
  • 9        *str = string(temp)
  • 10  }
  • 11
  • 12  //将字符串转换为byte的数组,并替换数组第i个元素为ch
  • 13  func str2Byte(str *string, i int, ch byte) {
  • 14        temp := []byte(*str)
  • 15        temp[i] = ch
  • 16        *str = string(temp)
  • 17  }
  • 18
  • 19  func main() {
  • 20        str := "你好 hello"
  • 21        str1 := "你好 hello"
  • 22        str2 := "你好 hello"
  • 23        str2Rune(&str, 0, 'A') //将第0个字符替换为A
  • 24        str2Byte(&str1, 0, 'A') //将第0个字符替换为A
  • 25        str2Byte(&str2, 7, 'A') //将第7个字符替换为A
  • 26        fmt.Println("rune 数组处理中文后:", str)
  • 27        fmt.Println("byte 数组处理中文后:", str1)
  • 28        fmt.Println("byte 数组处理英文后:", str2)
  • 29  }

输出结果:

图片描述

byte 和 rune 区别实例输出结果

结论:

  • string可以直接转换为rune或者byte数组;
  • runebyte可以互相转换;
  • byte 的操作单位是一个字节,可以理解为一个英文字符;
  • rune 的操作单位是一个字符,不管这个字符是什么字符。

 

3. 小结

本文主要学习了 Go 语言中的字符类型的使用,注意 byte 和 rune 使用上的区别。

文章来源于网络,侵删!

相关新闻