Golang语言基础数据类型之字符类型

简介: 这篇文章介绍了Go语言中的字符类型,包括字符概述、byte和rune类型的定义、转义字符的使用以及如何遍历字符串获取字符的示例。

                                              作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。

1.字符概述

组成每个字符串的元素叫做"字符",可以通过遍历或者单个获取字符串元素获得字符。 

Golang中没有专门的字符类型,如果要存储单个字符(字母),一般用byte或者rune来保存。

字符用单引号('')包裹起来。Go语言的字符有以下两种:
    byte类型:
        或者叫uint8型,代表一个ASCII码字符。
    rune类型:
        或者int32代表一个UTF-8字符。

当需要处理中文、日文或者其他复杂字符时,则需要用到rune类型。rune类型实际是一个int32。

Go使用了特殊的rune类型来处理Unicode,让基于Unicode的文本处理更为方便,也可以使用byte型进行默认字符串处理,性能和扩展性都有照顾。

Golang中字符使用UTF-8编码,Unicode是对应的字符集,UTF-8是Unicode的其中一种编码方案,其中还有UTF-16,UTF-32等多种编码方式。

2.定义byte和rune类型

package main

import "fmt"

func main() {

    var (
        // 英文字符,本质上对应的是一个unint8类型。字母,数字,标点等字符,底层是按照ASCII进行存储。
        a byte = 'Y'

        // 中文字符,本质上对应的是一个int32类型。汉子字符,底层对应的是Unicode码值23609。
        b rune = '尹'

        // 字符类型,本质上就是一个整数,也可以直接参与运算,输出字符的时候,会将对应的码值作为一个输出。
        c = a + 1
    )

    fmt.Printf("a = %v, 对应字符: %v,---> %T\n", a, string(a), &a)
    fmt.Printf("b = %v, 对应字符: %v,---> %T\n", b, string(b), &b)
    fmt.Printf("c = %v, 对应字符: %v,---> %T\n", c, string(c), &c)
}

3.转义字符

Go语言的字符串常见转义符包含回车、换行、单双引号、制表符等,如下表所示。
转义符 含义
\r 回车符(返回行首)
\n 换行符(直接跳到下一行的同列位置)
\b 退格
\t 制表符
\" 双引号
\\ 反斜杠
package main

import "fmt"

func main() {

    /*
        \n:
            换行。
        \b:
            退格。
        \r:
            光标回到本行开头,后续输入就会替换原有的字符。
        \t:
            制表符。
        \":
            原样输出双引号。
        \\:
            原样输出\。
    */
    fmt.Println("xxxxx\nyyy")
    fmt.Println("xxxxx\byyy")
    fmt.Println("xxxxx\ryyy")
    fmt.Println("xxxxx\tyyy")
    fmt.Println("xxxxx\"yyy")
    fmt.Println("xxxxx'y'yy")
    fmt.Println("xxxxx\\yyy")

    var (
        // 字符串支持很多常见的转义符
        s1 string = "\n\tGOPATH路径:\n\t\t 'd:\\yinzhengjie\\code\\Golang\\go.exe'\n\n\r哈哈哈\t\t\t\v开始学习Golang吧!\v要加油哟!\v你可以的!"
    )

    fmt.Printf("s1 ---> %s\n", s1)

}

4.遍历字符串获取字符

package main

import (
    "fmt"
)

func main() {

    var name = "JasonYin老师"

    for k, v := range name {
        fmt.Printf("%d ---> %v : %c, %T\n", k, v, v, v)
    }
}
目录
相关文章
|
1月前
|
Java 编译器 Go
【Golang】(5)Go基础的进阶知识!带你认识迭代器与类型以及声明并使用接口与泛型!
好烦好烦好烦!你是否还在为弄不懂Go中的泛型和接口而烦恼?是否还在苦恼思考迭代器的运行方式和意义?本篇文章将带你了解Go的接口与泛型,还有迭代器的使用,附送类型断言的解释
132 3
|
1月前
|
存储 安全 Java
【Golang】(4)Go里面的指针如何?函数与方法怎么不一样?带你了解Go不同于其他高级语言的语法
结构体可以存储一组不同类型的数据,是一种符合类型。Go抛弃了类与继承,同时也抛弃了构造方法,刻意弱化了面向对象的功能,Go并非是一个传统OOP的语言,但是Go依旧有着OOP的影子,通过结构体和方法也可以模拟出一个类。
125 1
|
1月前
|
存储 Java Go
【Golang】(3)条件判断与循环?切片和数组的关系?映射表与Map?三组关系傻傻分不清?本文带你了解基本的复杂类型与执行判断语句
在Go中,条件控制语句总共有三种if、switch、select。循环只有for,不过for可以充当while使用。如果想要了解这些知识点,初学者进入文章中来感受吧!
101 1
|
2月前
|
Linux Go iOS开发
IDA 9.2 发布:Golang 改进、新 UI 组件、类型解析等
IDA Pro 9.2 (macOS, Linux, Windows) - 强大的反汇编程序、反编译器和多功能调试器
595 0
|
Go
Golang语言之管道channel快速入门篇
这篇文章是关于Go语言中管道(channel)的快速入门教程,涵盖了管道的基本使用、有缓冲和无缓冲管道的区别、管道的关闭、遍历、协程和管道的协同工作、单向通道的使用以及select多路复用的详细案例和解释。
591 4
Golang语言之管道channel快速入门篇
|
Go
Golang语言之gRPC程序设计示例
这篇文章是关于Golang语言使用gRPC进行程序设计的详细教程,涵盖了RPC协议的介绍、gRPC环境的搭建、Protocol Buffers的使用、gRPC服务的编写和通信示例。
494 3
Golang语言之gRPC程序设计示例
|
安全 Go
Golang语言goroutine协程并发安全及锁机制
这篇文章是关于Go语言中多协程操作同一数据问题、互斥锁Mutex和读写互斥锁RWMutex的详细介绍及使用案例,涵盖了如何使用这些同步原语来解决并发访问共享资源时的数据安全问题。
279 4
|
Prometheus Cloud Native Go
Golang语言之Prometheus的日志模块使用案例
这篇文章是关于如何在Golang语言项目中使用Prometheus的日志模块的案例,包括源代码编写、编译和测试步骤。
255 4
Golang语言之Prometheus的日志模块使用案例
|
前端开发 中间件 Go
实践Golang语言N层应用架构
【10月更文挑战第2天】本文介绍了如何在Go语言中使用Gin框架实现N层体系结构,借鉴了J2EE平台的多层分布式应用程序模型。文章首先概述了N层体系结构的基本概念,接着详细列出了Go语言中对应的构件名称,包括前端框架(如Vue.js、React)、Gin的处理函数和中间件、依赖注入和配置管理、会话管理和ORM库(如gorm或ent)。最后,提供了具体的代码示例,展示了如何实现HTTP请求处理、会话管理和数据库操作。
208 1
|
Go
Golang语言文件操作快速入门篇
这篇文章是关于Go语言文件操作快速入门的教程,涵盖了文件的读取、写入、复制操作以及使用标准库中的ioutil、bufio、os等包进行文件操作的详细案例。
228 4
Golang语言文件操作快速入门篇

推荐镜像

更多