如何在Go中格式化字符串

由于字符串通常由书面文本组成,在很多情况下,我们可能希望通过标点符号、换行和缩进来更好地控制字符串的外观,以使其更易于阅读。

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

字符串字面量

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

在“Hello, World!”程序中,字符串字面量是"Hello, World!",而字符串值是 Hello, World!,没有引号。这个字符串值就是我们运行Go程序时在终端窗口中看到的输出。

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

引号

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

`Sammy says, "Hello!"`

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

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

通过使用反引号和双引号,我们可以控制字符串中引号和反引号的显示。

重要的是要记住,在Go中使用反引号会创建一个raw字符串字面量,而使用双引号会创建一个interpret 字符串字面量。

转义字符

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

下面列出了一些常见的转义字符:

转义字符它如何格式化
|反斜线
"双引号
\n换行符
\tTab(水平缩进)

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

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

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

我们可以使用 \n 转义字符来换行,而无需键入回车键或回车键:

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

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

fmt.Println("1.\tShark\n2.\tShrimp\n10.\tSquid")
Output1.      Shark
2.      Shrimp
10.     Squid

在前面的例子中,\t转义字符提供的水平缩进确保了在第二列内对齐,使输出非常易读。

转义字符用于为字符串添加额外的格式,这些格式可能很难或不可能实现。如果没有转义字符,你将无法构造字符串Sammy says, "I like to use the `fmt` package"

多行

将字符串打印成多行可以提高文本的可读性。对于多行,字符串可以组合成干净有序的文本,格式化为字母,或用于保持诗歌或歌曲歌词的换行。

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

`
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忽略字符串中的所有格式,包括转义字符。

我们使用反引号来创建一个原始字符串:

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

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

总结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/93945.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智慧公厕整体解决方案,厕所革命实施方案的范本

随着城市化进程的不断加快,智慧城市应用正成为未来城市发展的重要方向。其中,智慧公厕作为城市基础设施的重要组成部分,其建设范本已经成为各建设中的智慧城市不可或缺的重要内容。那么,如何打造智慧公厕整体解决方案?…

将数组和减半的最少操作【贪心2】

题目&#xff1a;将数组和减半的最少操作 贪心思路&#xff1a;每次挑选最大的数来减半。 解法&#xff1a;贪心大根堆 class Solution { public:int halveArray(vector<int>& nums) {priority_queue<double> heap;double sum 0.0;for(int& x : nums){hea…

(四)激光线扫描-光平面标定

在上一章节,已经实现了对激光线条的中心线提取,并且在最开始已经实现了对相机的标定,那么相机标定的作用是什么呢? 就是将图像二维点和空间三维点之间进行互相转换。 1. 什么是光平面 激光发射器投射出一条线,形成的一个扇形区域平面就是光平面,也叫光刀面,与物体相交…

代码随想录刷题 Day28

216.组合总和III 和前一个题一样&#xff0c;照着自己就能写出来&#xff0c;就多了一个判断结果是不是等于n的逻辑。有两个地方可以剪纸&#xff0c;一个是当和已经大于要找的时候直接返回&#xff0c;另一个是当剩余元素少于三个的时候直接返回&#xff08;第一层递归是少于…

MAC 如何解决GitHub下载速度慢的问题

说在前面 解决github下载速度慢的方法很多&#xff0c;本文主要介绍通过Git镜像的方式解决下载慢的问题。 主要步骤有&#xff1a;1、找到gitconfig文件&#xff0c; 2、通过git命令查看当前生效的config 配置 3、使用git config命令编辑并添加国内镜像源 1、gitconfig 文件在…

Android etc1tool之png图片转换pkm 和 zipalign简介

关于作者&#xff1a;CSDN内容合伙人、技术专家&#xff0c; 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 &#xff0c;擅长java后端、移动开发、商业变现、人工智能等&#xff0c;希望大家多多支持。 目录 一、导读二、etc1tool2.1、用法 三、zipalign3.1 使用 四…

在Mac M2本地注册GitLab runner

最近在搞公司的CI/CD&#xff0c;简单记录下部分过程 安装runner sudo curl --output /usr/local/bin/gitlab-runner "https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-darwin-arm64" 创建runner 这个步骤需要在gitlab中进行&am…

Qt全屏显示与退出

仿照 按Escape键退出程序中的实现&#xff0c;我们在程序开始的时候全屏显示&#xff0c;按esc键的时候退出全屏。 showFullScreen 全屏显示只需要调用QWidget类&#xff08;QMainWindow也是一个QWidget类&#xff09;的 showFullScreen() 成员函数即可。 退出全屏&#x…

【光伏场地建设规划】python实现-附ChatGPT解析

1.题目 光伏场地建设规划 知识点:数组、动态规划 时间限制:1s 空间限制: 256MB 限定语言:不限 题目描述: 祖国西北部有一片大片荒地,其中零星的分布着一些湖泊,保护区,矿区,整体上常年光照良好,但是也有一些地区光照不太好。 某电力公司希望在这里建设多个光伏电站,生产…

持续集成部署-k8s-核心概念-资源与对象

持续集成部署-k8s-核心概念-资源与对象 1. 资源清单1.1 K8S 的资源清单1.2 常用字段解释2. 对象规约与状态3. 资源的分类:元空间、集群、命名空间3.1 元数据类型3.2 集群类型3.2.1 Namespace3.2.2 Node3.2.3 ClusterRole3.2.4 ClusterRoleBinding3.2 命名空间级3.2.1 工作负载…

电脑右键新建记事本不见了--设置恢复篇(无需操作注册表)

电脑右键新建记事本不见了–设置恢复篇&#xff08;无需修改注册表&#xff09; 电脑不知怎么想右键新建记事本结果竟然不见了&#xff0c;搜寻网上的都是什么修改注册表&#xff0c;粘贴代码修复&#xff08;感觉太复杂了&#xff09;&#xff0c;这里介绍通过设置内重新对记…

北京开发APP需要多少钱

北京开发一个移动应用&#xff08;APP&#xff09;的费用因多种因素而异&#xff0c;包括项目的规模、复杂性、所需功能、设计要求、技术选择、开发团队的经验和地理位置等。一般来说&#xff0c;北京的APP开发费用通常较高&#xff0c;因为这是中国的主要技术和创新中心之一&a…

5.5线程同步机制类封装及线程池实现

文章目录 5.5线程同步机制类封装及线程池实现线程池线程同步机制类封装线程池实现 5.5线程同步机制类封装及线程池实现 线程池 线程池是由服务器预先创建的一组子线程&#xff0c;线程池中的线程数据应该与CPU数据差不多。线程池中的所有子线程都运行着相同的代码。当有新的任…

QT 之数据库 QSqlQuery CURD 实战

零、参考文档 https://doc.qt.io/archives/qt-6.0/qsqldatabase.html 一、开发环境 Ubuntu 20.04 QT6.0 Microsoft SQL Server 2022 Developer Edition (64-bit) 先修改 /etc/odbc.ini 的数据源配置&#xff0c;指定连接数据库 vdb&#xff0c; sudo vim /etc/odbc.ini[mss…

IDEA Rogstry中找不到compiler.automake.allow.when.app.running问题解决

网上大部分人教我们 先 File > Settings 然后 勾选 Build 下的 Compiler中的 Build project automatically 这些步骤都不会有问题 然后就会让我们 ctrl shift alt / 点 Rogstry 打开后 我人就麻了 根本没有什么 compiler.automake.allow.when.app.running 也不用慌 我们…

快速上手Apache POI

哈喽~大家好&#xff0c;这篇我们来看看快速上手Apache POI。 &#x1f947;个人主页&#xff1a;个人主页​​​​​ &#x1f948; 系列专栏&#xff1a;【日常学习上的分享】 &#x1f949;与这篇相关的文章&#xff1a; Red…

Explain执行计划字段解释说明---select_type、table、patitions字段说明

1、select_type的类型有哪些 2、select_type的查询类型说明 1、SIMPLE 简单的 select 查询,查询中不包含子查询或者UNION 2、PRIMARY 查询中若包含任何复杂的子部分&#xff0c;最外层查询则被标记为Primary 3、DERIVED 在FROM列表中包含的子查询被标记为DERIVED(衍生)&…

SpringCloudAlibaba 相关组件的学习一

目录 前言 系统架构演变 1、单体架构 2、垂直架构 3、分布式架构 4、SOA架构 5、微服务架构 一、微服务架构的介绍 1、微服务架构的常见问题 2 微服务架构的常见概念 2.1 服务治理 2.2 服务调用 2.3 服务网关 2.4 服务容错 2.5 链路追踪 3、微服务架构的常用解决…

基于视频技术与AI检测算法的体育场馆远程视频智能化监控方案

一、方案背景 近年来&#xff0c;随着居民体育运动意识的增强&#xff0c;体育场馆成为居民体育锻炼的重要场所。但使用场馆内的器材时&#xff0c;可能发生受伤意外&#xff0c;甚至牵扯责任赔偿纠纷问题。同时&#xff0c;物品丢失、人力巡逻成本问题突出&#xff0c;体育场…

SpringCloud Alibaba - Seata 部署 TC 服务,并集成微服务

目录 一、Seata 架构 1.1、Seata 架构重要角色 1.2、部署 TC 服务 1.2.1、前言 1.2.2、下载 seata-server 包&#xff0c;解压 1.2.3、修改配置 1.2.4、在 nacos 中添加配置 1.2.5、创建数据库表 1.2.6、启动 TC 服务 1.3、微服务集成 Seata 1.3.1、引入依赖 1.3.2、…