如何在Go中编写多行字符串?

2023-10-30

本文翻译自:How do you write multiline strings in Go?

Does Go have anything similar to Python's multiline strings: Go是否与Python的多行字符串相似?

"""line 1
line 2
line 3"""

If not, what is the preferred way of writing strings spanning multiple lines? 如果不是,编写跨多行字符串的首选方式是什么?


#1楼

参考:https://stackoom.com/question/XHr2/如何在Go中编写多行字符串


#2楼

From String literals : 字符串文字

  • raw string literal supports multiline (but escaped characters aren't interpreted) 原始字符串文字支持多行(但不解释转义字符)
  • interpreted string literal interpret escaped characters, like ' \\n '. 解释的字符串文字解释转义的字符,例如' \\n '。

But, if your multi-line string has to include a backquote (`), then you will have to use an interpreted string literal: 但是,如果多行字符串必须包含反引号(`),则必须使用解释后的字符串文字:

`line one
  line two ` +
"`" + `line three
line four`

You cannot directly put a backquote (`) in a raw string literal (``xx \\ ). 您不能在原始字符串文字(``xx \\ )中直接添加反引号(`)。
You have to use (as explained in " how to put a backquote in a backquoted string? "): 您必须使用(如“ 如何在反引号中的字符串中加上反引号? ”中所述):

 + "`" + ...

#3楼

You can put content with `` around it, like 您可以在内容周围加上``

var hi = `I am here,
hello,
`

#4楼

Use raw string literals for multi-line strings: 对多行字符串使用原始字符串文字:

func main(){
    multiline := `line 
by line
and line
after line`
}

Raw string literals 原始字符串文字

Raw string literals are character sequences between back quotes, as in `foo` . 原始字符串文字是反引号之间的字符序列,如`foo` Within the quotes, any character may appear except back quote. 在引号内,除反引号外,任何字符都可能出现。

A significant part is that is raw literal not just multi-line and to be multi-line is not the only purpose of it. 一个重要的部分是原始文字不只是多行,而且成为多行并不是其唯一目的。

The value of a raw string literal is the string composed of the uninterpreted (implicitly UTF-8-encoded) characters between the quotes; 原始字符串文字的值是由引号之间未解释(隐式为UTF-8编码)的字符组成的字符串。 in particular, backslashes have no special meaning... 特别是反斜杠没有特殊含义...

So escapes will not be interpreted and new lines between ticks will be real new lines . 因此,转义符将不会被解释, 刻度线之间的新行将是真正的新行

func main(){
    multiline := `line 
by line \n
and line \n
after line`

    // \n will be just printed. 
    // But new lines are there too.
    fmt.Print(multiline)
}

Concatenation 级联

Possibly you have long line which you want to break and you don't need new lines in it. 可能您有长行要中断,并且不需要新行。 In this case you could use string concatenation. 在这种情况下,您可以使用字符串连接。

func main(){
    multiline := "line " +
            "by line " +
            "and line " +
            "after line"

    fmt.Print(multiline) // No new lines here
}

Since " " is interpreted string literal escapes will be interpreted. 由于“”被解释为字符串,因此将解释字面量转义。

func main(){
    multiline := "line " +
            "by line \n" +
            "and line \n" +
            "after line"

    fmt.Print(multiline) // New lines as interpreted \n
}

#5楼

You have to be very careful on formatting and line spacing in go, everything counts and here is a working sample, try it https://play.golang.org/p/c0zeXKYlmF 您必须非常注意格式和行间距,一切都很重要,这是一个有效的示例,请尝试一下https://play.golang.org/p/c0zeXKYlmF

package main

import "fmt"

func main() {
    testLine := `This is a test line 1
This is a test line 2`
    fmt.Println(testLine)
}

#6楼

you can use raw literals. 您可以使用原始文字。 Example

s:=`stack
overflow`
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Go中编写多行字符串? 的相关文章

  • libxml2 xmlChar * 到 std::wstring

    libxml2似乎将所有字符串存储在 UTF 8 中 如xmlChar xmlChar This is a basic byte in an UTF 8 encoded string It s unsigned allowing to pi
  • 如何从 PHP 中的字符串创建可能的字符串组合?

    如何从 PHP 中的字符串创建可能的字符串组合 Exp input abc output array 0 gt a 1 gt ab 2 gt abc 3 gt ac 4 gt acb 5 gt b 6 gt ba 7 gt bac 8 gt
  • 如何使用 PHP 查找字符串中字符的序列模式?

    假设我有随机的文本块 EAMoAAQAABwEBAAAAAAAAAAAAAAABAgMFBgcIBAkBAQABBQEBAAAAAAAAAAAAAAAGAgMEBQcBCBAAAQMDAgMEBQcIBQgGCwEAAQACAxEEBSEG
  • 如何将 R 数据框中的多个字符列合并为单个列

    我正在处理人口普查数据 需要将四个字符列合并为一列 Example LOGRECNO STATE COUNTY TRACT BLOCK 60 01 001 021100 1053 61 01 001 021100 1054 62 01 00
  • 如何在字符串vba中包含引号

    我想存储以下文本 Test1 Monday Test Abcdef 全部在字符串中包含引号 我知道要在字符串中包含引号 我必须包含 之前 但在这里这不是一个很好的解决方案 因为我在文本中有太多这样的解决方案 知道如何一次完成这一切吗 您有两
  • 更改特定字符串的颜色

    有谁知道如果将特定单词输入文本区域 我如何更改它的颜色 例如 如果用户输入 你好我的朋友 它会动态地将 你好 更改为绿色 在google上花了很多时间 找不到任何相关的东西 谢谢 textareas 的设计目的不是选择性着色
  • 解组转义 XML

    在 Go 中 我将如何解码此 XML 响应 我尝试过建立一个自定义UnMarshal方法在我的Answerstruct 但我运气不太好
  • 打印到 stdout 会导致阻塞的 goroutine 运行吗?

    作为一个愚蠢的基本线程练习 我一直在尝试实现理发师睡觉的问题 http en wikipedia org wiki Sleeping barber problem在戈兰 对于通道来说 这应该很容易 但我遇到了一个 heisenbug 也就是
  • 从另一列的子字符串创建列

    我有一个 Pandas 数据框对象 我想从现有列的子字符串创建新列 我的数据如下所示 Date variable want1 want2 want3 0 02 01 08 Australia Sydney A Australia Sydne
  • NHibernate 获取 & 字符串 Id

    我在 NHibernate 上有一个分配了字符串 Id 的实体 并且在通过 Id 获取实体时遇到了一些问题 例子 假设有这样的数据库记录 Id Description AAA MyDescription 现在 如果我使用搜索 ID aaa
  • C 支持原始字符串吗?

    C 11 添加了对原始字符串文字的支持 例如 R foo A weird string foo C有这样的东西吗 如果有 标准是什么版本 C11 如果没有 有谁知道它是否正在计划中以及是否有编译器支持它 C有这样的东西吗 如果有 标准是什么
  • 如何在 R 中将字符串解析为层次结构或树

    有没有办法将表示组的字符串解析为 R 中的层次结构 假设我的小组结构如下 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 3 1 1 3 1 1 1 3 2 1 1 3 3 1 2 1 2 1 1 2 1 1 1 2 1 2 1
  • 将 numpy 代码点数组与字符串相互转换

    我有一个很长的 unicode 字符串 alphabet range 0x0FFF mystr join chr random choice alphabet for in range 100 mystr re sub W mystr 我想
  • string.Compare 行为

    怎么会这样呢 这是从VS2008中的立即窗口获取的 string Compare 1 string Compare 0 0 1 从言论来看字符串比较 http msdn microsoft com en us library 84787k2
  • 复杂数据类型作为 Go 中映射的键

    我正在尝试在 Go 中创建一个由大整数作为键的映射 effective Go 明确指出 结构体 数组和切片不能用作映射键 因为这些类型上没有定义相等性 这是有道理的 我当然可以将大整数转换为字符串并使用字符串作为键 但我在这里寻找更通用的解
  • 正则表达式查找字符串中的整数和小数

    我有一个像这样的字符串 str1 12 ounces str2 1 5 ounces chopped 我想从字符串中获取金额 无论它是否是小数 12 或 1 5 然后获取紧邻的前一个测量值 盎司 我能够使用一个非常基本的正则表达式来获取测量
  • 用于开始和/或包含搜索的最快字符串集合结构/算法是什么

    我有以下情况 我有一个大的字符串集合 比如说 250 000 平均长度可能是 30 我要做的就是在这些搜索中进行许多搜索 大多数搜索都是 StartsWith 和 Contains 类型的 该集合在运行时是静态的 这意味着选择的集合的初始读
  • 如何将字符串日期转换为 NSDate?

    我想转换字符串 2014 07 15 06 55 14 198000 00 00 to an NSDate在斯威夫特 尝试这个 let dateFormatter NSDateFormatter dateFormatter dateForm
  • 将 time.Time 转换为字符串

    我正在尝试将数据库中的一些值添加到 string在围棋中 其中一些是时间戳 我收到错误 无法在数组元素中使用 U Created date 类型 time Time 作为类型字符串 我可以转换吗time Time to string typ
  • 将 Excel 范围转换为 VBA 字符串

    我想将给定范围内的值转换为 VBA 字符串 其中原始单元格值由任何选定的列分隔符和行分隔符分隔 分隔符可以是一个字符或更长的字符串 行分隔符是行末尾的字符串 该字符串应该像我们从左上角 从左到右 到右下角读取文本一样完成 以下是范围 A1

随机推荐

  • FastDFS下载文件自定义命名

    上一节我们讲述了FastDFS的搭建和文件的上传 docker搭建FastDFS及遇到的问题解决 花开花落与云卷云舒的博客 CSDN博客 这一节我们讲讲如何将上传的文件下载到我们的本机并还原为原来的文件名 一 前言 在上一节中 我们知道我们
  • 最大权闭合子图的简单证明

    文章目录 一 概念 二 证明 2 1流网络的构造 2 2首先证明原图G的任何一个闭合子图都与新图 G G
  • docker报错WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) afte

    完整报错 WARNING Retrying Retry total 4 connect None read None redirect None status None after connection broken by NewConne
  • springboot swagger2

    swagger2 介绍 Swagger Codegen 通过Codegen 可以将描述文件生成html格式和cwiki形式的接口文档 同时也能生成多钟语言的服务端和客户端的代码 支持通过jar包 docker node等方式在本地化执行生成
  • 查询练习题

    1 查询Student表中的所有记录的Sname Ssex和Class列 select Sname Ssex Class from Student 2 查询教师所有的单位即不重复的Depart列 select Depart count fr
  • AD20使用技巧和笔记

    AD20自学笔记 文章目录 AD20自学笔记 细节 规则 绘制PCB全流程 细节 AD20默认的铺铜 会出现相同网络的导线 如GND 将铺铜分隔开的情况 导致铜箔没有将区域完全覆盖 解决办法 选中铺铜区域 右键 属性 将 Pour Over
  • VS2022部署/安装 QT(以5.14.2为例)

    一 下载并安装Qt Visual Studio Tools 点击扩展 并选择管理扩展 二 搜索QT并下载Qt Visual Studio Tools 注意 如果wifi下载很慢 甚至不动 可以尝试用 热点 下载好后 关闭vs2022 它会自
  • Java基础 String StringBuffer StringBuilder的异同介绍

    一 String StringBuffer StringBuilder的对比 String StringBuffer StringBuilder 字符串类型 常量 不可变 变量 可变 变量 可变 线性安全 安全 final修饰 安全 方法s
  • 什么是PHP中的函数?它们如何使用?

    嘿 你好啊 PHP中的函数就像是一个超级有技能的工人 可以帮助我们更快更好地完成任务 它们就像是一个个工具箱 里面装满了各种用途的工具 函数可以执行各种任务 比如计算两个数的和 检查字符串是否包含某个字符 读取文件等等 使用函数可以让我们的
  • golang构造N叉树

    package main import fmt strconv sync type Spaninfo struct AppNames string json appNames ContainErr bool json containErr
  • STM32端口复用和重映射

    STM32的引脚可设置为可设置为 普通IO功能 复用功能 重映射功能 不过普通IO功能 复用功能用得比较多 复用 在TSM32里面 大部分的引脚都是有GPIO复用功能 也就是说 一个 GPIO如果可以复用为内置外设的功能引脚 那么当这个 G
  • Java使用POI导出Excel、合并单元格、插入网络图片

    假设存在这样一张表A audience 观众表 id zjhm name gender address 表B seat 座位表 表明这个观众主动坐过哪些座位 id 表C check 校核表 表明这个观众被系统管理人员校核过哪些座位 id 一
  • Python练习题——BNUZ

    python练习题 BNUZER 一 填空题 二 简答题 三 程序设计题 谏言 一 填空题 若world world 则print hello world 输出 helloworld 表达式 3 in 1 2 3 4 的值为 False 表
  • 基于Element-UI给Vue页面添加Loading效果

    基于Element UI给Vue页面添加Loading效果 1 引入 2 在标签里面添加v loading 3 在data中定义 4 调用后端接口之前设置true 返回数据画图后设置false 1 引入 import Loading fro
  • 如何搭建个人服务器(网站/游戏)?

    在现代这个互联网时代 不会建站就OUT啦 下面小编给大家分享一个最快捷的建站方法 用这个建站方法 不仅简单快速 而且不花一分钱 不用买域名 也不用买空间 尤其适合刚刚接触建站的新手 学建站的学生和想打造个人网页的朋友 准备工具 一台电脑 X
  • 轻量、便捷、高效—经纬恒润AETP助力车载以太网测试

    随着自动驾驶技术和智能座舱的不断发展 高宽带 高速率的数据通信对主干网提出了稳定 高效的传输要求 CAN FD LIN已无法充分满足汽车的通信需求 车载以太网作为一种快速且扩展性好的网络技术 已经逐步成为了汽车主干网的首选 此外 为了满足车
  • STM32CubeProgrammer V2.9.0版本 通过UART bootload下载STM32G030系列芯片有Bug

    文章目录 CubeProgrammerV2 9 0最新版本的Bug 友情提醒 CubeProgrammerV2 9 0最新版本的Bug 本人笔记本电脑最近新装系统 想着安装最先版本的Stm32CubeProgrammer软件试试 再使用Ua
  • Ubantu 系统下安装fasttext及重要函数

    因为最近遇到了一个文本向量化的问题 所以接触了很多fasttext这个工具 原理什么的就不讲 网上实在是太多了 但是我在实验的过程中遇到了很多的问题 其中绝大多数都是安装fasttext问题 我也看到了很多博主说是fasttext是在win
  • 性能测试——性能监控工具——ServerAgent的安装与使用

    一 下载 首先进入网址 http jmeter plugins org downloads all 下载资源 ServerAgent 2 2 1 zip JMeterPlugins Standard 1 3 1 zip JMeterPlug
  • 如何在Go中编写多行字符串?

    本文翻译自 How do you write multiline strings in Go Does Go have anything similar to Python s multiline strings Go是否与Python的多