跳转到主要内容

标签(标签)

资源精选(342) Go开发(108) Go语言(103) Go(99) angular(82) LLM(75) 大语言模型(63) 人工智能(53) 前端开发(50) LangChain(43) golang(43) 机器学习(39) Go工程师(38) Go程序员(38) Go开发者(36) React(33) Go基础(29) Python(24) Vue(22) Web开发(20) Web技术(19) 精选资源(19) 深度学习(19) Java(18) ChatGTP(17) Cookie(16) android(16) 前端框架(13) JavaScript(13) Next.js(12) 安卓(11) typescript(10) 资料精选(10) NLP(10) 第三方Cookie(9) Redwoodjs(9) LLMOps(9) Go语言中级开发(9) 自然语言处理(9) 聊天机器人(9) PostgreSQL(9) 区块链(9) mlops(9) 安全(9) 全栈开发(8) ChatGPT(8) OpenAI(8) Linux(8) AI(8) GraphQL(8) iOS(8) 软件架构(7) Go语言高级开发(7) AWS(7) C++(7) 数据科学(7) whisper(6) Prisma(6) 隐私保护(6) RAG(6) JSON(6) DevOps(6) 数据可视化(6) wasm(6) 计算机视觉(6) 算法(6) Rust(6) 微服务(6) 隐私沙盒(5) FedCM(5) 语音识别(5) Angular开发(5) 快速应用开发(5) 提示工程(5) Agent(5) LLaMA(5) 低代码开发(5) Go测试(5) gorm(5) REST API(5) 推荐系统(5) WebAssembly(5) GameDev(5) CMS(5) CSS(5) machine-learning(5) 机器人(5) 游戏开发(5) Blockchain(5) Web安全(5) Kotlin(5) 低代码平台(5) 机器学习资源(5) Go资源(5) Nodejs(5) PHP(5) Swift(5) 智能体(4) devin(4) Blitz(4) javascript框架(4) Redwood(4) GDPR(4) 生成式人工智能(4) Angular16(4) Alpaca(4) SAML(4) JWT(4) JSON处理(4) Go并发(4) kafka(4) 移动开发(4) 移动应用(4) security(4) 隐私(4) spring-boot(4) 物联网(4) nextjs(4) 网络安全(4) API(4) Ruby(4) 信息安全(4) flutter(4) 专家智能体(3) Chrome(3) CHIPS(3) 3PC(3) SSE(3) 人工智能软件工程师(3) LLM Agent(3) Remix(3) Ubuntu(3) GPT4All(3) 软件开发(3) 问答系统(3) 开发工具(3) 最佳实践(3) RxJS(3) SSR(3) Node.js(3) Dolly(3) 移动应用开发(3) 编程语言(3) 低代码(3) IAM(3) Web框架(3) CORS(3) 基准测试(3) Go语言数据库开发(3) Oauth2(3) 并发(3) 主题(3) Theme(3) earth(3) nginx(3) 软件工程(3) azure(3) keycloak(3) 生产力工具(3) gpt3(3) 工作流(3) C(3) jupyter(3) 认证(3) prometheus(3) GAN(3) Spring(3) 逆向工程(3) 应用安全(3) Docker(3) Django(3) R(3) .NET(3) 大数据(3) Hacking(3) 渗透测试(3) C++资源(3) Mac(3) 微信小程序(3) Python资源(3) JHipster(3) 大型语言模型(2) 语言模型(2) 可穿戴设备(2) JDK(2) SQL(2) Apache(2) Hashicorp Vault(2) Spring Cloud Vault(2) Go语言Web开发(2) Go测试工程师(2) WebSocket(2) 容器化(2) AES(2) 加密(2) 输入验证(2) ORM(2) Fiber(2) Postgres(2) Gorilla Mux(2) Go数据库开发(2) 模块(2) 泛型(2) 指针(2) HTTP(2) PostgreSQL开发(2) Vault(2) K8s(2) Spring boot(2) R语言(2) 深度学习资源(2) 半监督学习(2) semi-supervised-learning(2) architecture(2) 普罗米修斯(2) 嵌入模型(2) productivity(2) 编码(2) Qt(2) 前端(2) Rust语言(2) NeRF(2) 神经辐射场(2) 元宇宙(2) CPP(2) 数据分析(2) spark(2) 流处理(2) Ionic(2) 人体姿势估计(2) human-pose-estimation(2) 视频处理(2) deep-learning(2) kotlin语言(2) kotlin开发(2) burp(2) Chatbot(2) npm(2) quantum(2) OCR(2) 游戏(2) game(2) 内容管理系统(2) MySQL(2) python-books(2) pentest(2) opengl(2) IDE(2) 漏洞赏金(2) Web(2) 知识图谱(2) PyTorch(2) 数据库(2) reverse-engineering(2) 数据工程(2) swift开发(2) rest(2) robotics(2) ios-animation(2) 知识蒸馏(2) 安卓开发(2) nestjs(2) solidity(2) 爬虫(2) 面试(2) 容器(2) C++精选(2) 人工智能资源(2) Machine Learning(2) 备忘单(2) 编程书籍(2) angular资源(2) 速查表(2) cheatsheets(2) SecOps(2) mlops资源(2) R资源(2) DDD(2) 架构设计模式(2) 量化(2) Hacking资源(2) 强化学习(2) flask(2) 设计(2) 性能(2) Sysadmin(2) 系统管理员(2) Java资源(2) 机器学习精选(2) android资源(2) android-UI(2) Mac资源(2) iOS资源(2) Vue资源(2) flutter资源(2) JavaScript精选(2) JavaScript资源(2) Rust开发(2) deeplearning(2) RAD(2)

由于字符串通常由书面文本组成,因此在许多情况下,我们可能希望通过标点符号、换行符和缩进更好地控制字符串的外观,以使它们对人类更具可读性。

在本教程中,我们将介绍一些使用 Go 字符串的方法,以确保所有输出文本的格式正确。

字符串文字


让我们首先区分字符串文字和字符串值。字符串文字是我们在计算机程序的源代码中看到的,包括引号。当我们调用 fmt.Println 函数并运行程序时,我们会看到一个字符串值。

在“你好,世界!”程序,字符串文字是“你好,世界!”而字符串值为 Hello, World!不带引号。字符串值是我们在运行 Go 程序时在终端窗口中看到的输出。

但是某些字符串值可能需要包含引号,例如当我们引用源时。因为字符串字面量和字符串值不等价,所以通常需要为字符串字面量添加额外的格式,以确保字符串值按照我们想要的方式显示。

引号


因为我们可以在 Go 中使用反引号 (`) 或双引号 ("),所以通过在由反引号括起来的字符串中使用双引号来在字符串中嵌入引号很简单:

`Sammy says, "Hello!"`


或者,要使用反引号,您可以将字符串括在双引号中:

"Sammy likes the `fmt` package for formatting strings.."


在我们组合反引号和双引号的方式中,我们可以控制字符串中引号和反引号的显示。

重要的是要记住,在 Go 中使用反引号会创建一个原始字符串文字,而使用双引号会创建一个解释字符串文字。要了解有关差异的更多信息,请阅读 Go 中使用字符串的介绍教程。

转义字符


格式化字符串的另一种方法是使用转义字符。转义字符用于告诉代码后面的字符具有特殊含义。转义字符都以反斜杠键 (\) 开头,并结合字符串中的另一个字符以某种方式格式化给定的字符串。

以下是几个常见转义字符的列表:

Escape Character How it formats
\\ Backslash
\" Double Quote
\n Line Break
\t Tab (horizontal indentation)

让我们使用转义字符将引号添加到上面的引号示例中,但这次我们将使用双引号来表示字符串:

fmt.Println("Sammy says, \"Hello!\"")
Output

Sammy says, "Hello!"


通过使用转义字符 \",我们可以使用双引号将包含双引号之间引用的文本的字符串括起来。

我们可以使用 \n 转义字符来换行,而无需按 enter 或 return 键:

fmt.Println("This string\nspans multiple\nlines.")


Output

Output
This string
spans multiple
lines.

我们也可以组合转义字符。让我们打印一个多行字符串并包含一个分项列表的制表符间距,例如:

fmt.Println("1.\tShark\n2.\tShrimp\n10.\tSquid")

Output
1.      Shark
2.      Shrimp
10.     Squid


与 \t 转义字符一起提供的水平缩进确保在前面示例中的第二列内对齐,使输出对人类来说非常易读。

转义字符用于向可能难以或不可能实现的字符串添加额外的格式。如果没有转义字符,您将无法构造 Sammy 所说的字符串,“我喜欢使用 `fmt` 包”。

多行


在多行上打印字符串可以使文本对人类更具可读性。通过多行,可以将字符串分组为干净有序的文本,格式化为字母,或用于维护诗歌或歌曲歌词的换行符。

要创建跨越多行的字符串,使用反引号将字符串括起来。请记住,虽然这将保留行返回,但它也创建了一个原始字符串文字。

`
This string is on 
multiple lines
within three single 
quotes on either side.
`

如果你打印这个,你会注意到有一个前导和尾随返回:

Output

This string is on 
multiple lines
within three single 
quotes on either side.


为避免这种情况,您需要将第一行紧跟在反引号之后,并以反引号结束最后一行。

`This string is on 
multiple lines
within three single 
quotes on either side.`


如果您需要创建解释字符串文字,可以使用双引号和 + 运算符来完成,但您需要插入自己的换行符。

"This string is on\n" +
"multiple lines\n" +
"within three single\n" +
"quotes on either side."


虽然反引号可以更轻松地打印和阅读冗长的文本,但如果您需要解释字符串文字,则需要使用双引号。

原始字符串文字


如果我们不想在字符串中使用特殊格式怎么办?例如,我们可能需要比较或评估故意使用反斜杠的计算机代码字符串,因此我们不希望 Go 将其用作转义字符。

原始字符串文字告诉 Go 忽略字符串中的所有格式,包括转义字符。

我们通过在字符串周围使用反引号来创建一个原始字符串:

fmt.Println(`Sammy says,\"The balloon\'s color is red.\"`)

Output
Sammy says,\"The balloon\'s color is red.\"


通过在给定字符串周围使用反引号来构造原始字符串,我们可以保留反斜杠和其他用作转义字符的字符。

结论


本教程通过使用字符串介绍了几种在 Go 中格式化文本的方法。通过使用转义字符或原始字符串等技术,我们能够确保程序的字符串在屏幕上正确呈现,以便最终用户能够轻松阅读所有输出文本。

文章链接