9.2 字符串拼接

字符串拼接

使用运算符拼接字符串

使用加号"+"运算符,可将几个较小的字符串拼接成一个更大的字符串,其拼接的前后顺序严格遵循每个字符串在加法表达式中出现的顺序

  • s := "北冥有鱼,其名为鲲。"
    s = s + `鲲之大,不知其几千里也;` + "化而为鸟,其名为鹏。"

使用复合赋值"+="运算符,可将其右边的字符串拼接到其左边的字符串后面

  • s := "北冥有鱼,其名为鲲。"
    s += `鲲之大,不知其几千里也;`
    s += "化而为鸟,其名为鹏。"

字符串型的变量都是只读的,其内容不可修改,但可以赋值(或复合赋值)。

  • s := "golang"
  • s[0] += 'A' - 'a' // 错误,s的内容不可修改;在此试图+=大小写字符的ASCII码之差,来实现小写转为大写。
  • s = string(s[0]+'A'-'a') + s[1:] // "Golang",并非修改s的内容,而是让s引用一个新串。
// 字符串拼接 +
// 加号运算符将其左边和右边的字符串合并成一个字符串
package mainimport "fmt"func main() {s := "Oh sweet ignition "fmt.Println(s + `be my fuse`)	 // Oh sweet ignition be my fuse 
}
// 字符串扩展-符合运算符 +=
// 复合赋值运算符将其右边的字符串合并到其左边的字符串中
package mainimport "fmt"func main() {s := `Can you hear me?
`	// 此处使用了原始字符串形式,其中包含1个换行符;s += "Hear me!"fmt.Println(s)	// Can you hear me?// Hear me! }

只有字符串才能被拼接

只有字符串类型的数据才能拼接在一起,将字符串与非字符串,甚至单个字符,拼接在一起将导致编译错误。

  • i, s := 1, " egg"
    myBreakfast := i + s // 错误
  • 正确的做法是先将非字符串数据转换成字符串,再与字符串拼接myBreakfast := strconv.Itoa(i) + s // strconv包的Itoa函数用于将整数转换成字符串。

所有的类型转换都不是改变数据的类型,因为数据的类型永远不可能改变,而是根据某种规则创建一个符合预期类型的数据,其内容来自原始数据。例如,strconv.Itoa()没有能力去改变数据的类型,而是创建了一个与指定数据语义一致的字符串数据。

// 只有字符串才能拼接为字符串常量
// 试图将非字符串类型的数据与字符串进行拼接将导致编译错误
package mainimport "fmt"func main() {i, s := 1, " egg"// invalid operation: i + s (mismatched types int and string)myBreakfast := i + s fmt.Println(myBreakfast)	 
}
// 将其他类型转化为字符串(对上例的改正)
// strconv包的Itoa函数可将整数转换为字符串
package mainimport ("fmt""strconv"
)func main() {i, s := 1, " egg"myBreakfast := strconv.Itoa(i) + sfmt.Println(myBreakfast) // 1 egg 
}

使用缓冲去拼接字符串

如果需要在一个循环中逐字符或逐片段地拼接字符串,使用bytes包的Buffer类型创建一个字节缓冲区,不失为一种效率更高的解决之道。

func ToLower(s string) string { //把参数字符串转为全小写返回var buffer bytes.Buffer // 声明一个缓冲for i := 0; i < len(s); i++ {if 'A' <= s[i] && s[i] <= 'Z' {buffer.WriteString(string(s[i] + 'a' - 'A'))} else {buffer.WriteString(string(s[i]))}}return buffer.String()
} 
// 使用缓存去拼接字符串
// 在循环中使用空字节缓冲区拼接字符串的效率更高
package mainimport ("bytes""fmt"
)func main() {buffer := bytes.Buffer{}for i := 0; i < 10; i++ {for j := 0; j < 9-i; j++ {buffer.WriteString(" ")}for j := 0; j < 2*i+1; j++ {buffer.WriteString("* ")}buffer.WriteString("\n")}s := buffer.String()fmt.Println(s)
}
//  打印输出:** * ** * * * ** * * * * * ** * * * * * * * ** * * * * * * * * * ** * * * * * * * * * * * ** * * * * * * * * * * * * * ** * * * * * * * * * * * * * * * ** * * * * * * * * * * * * * * * * * *

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

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

相关文章

用神经网络预测三角形的面积

周末遛狗时&#xff0c;我想起一个老问题&#xff1a;神经网络能预测三角形的面积吗&#xff1f; 神经网络非常擅长分类&#xff0c;例如根据花瓣长度和宽度以及萼片长度和宽度预测鸢尾花的种类&#xff08;setosa、versicolor 或 virginica&#xff09;。神经网络还擅长一些回…

2024中青杯A题数学建模成品文章数据代码分享

人工智能视域下养老辅助系统的构建 摘要 随着全球人口老龄化的加剧&#xff0c;养老问题已经成为一个世界性的社会问题&#xff0c;对社会各个方面产生了深远影响&#xff0c;包括劳动力市场、医疗保健和养老金制度等。人口结构变化对养老服务的质量和覆盖面提出了更高要求。特…

Python 爬虫编写入门

一、爬虫概述 网络爬虫&#xff08;Web Crawler&#xff09;或称为网络蜘蛛&#xff08;Web Spider&#xff09;&#xff0c;是一种按照一定规则&#xff0c;自动抓取互联网信息的程序或者脚本。它们可以自动化地浏览网络中的信息&#xff0c;通过解析网页内容&#xff0c;提取…

3台机器快速安装ELK集群

安装和配置 Elasticsearch、Kibana 和 Logstash 以下是安装和配置 Elasticsearch、Kibana 和 Logstash 的详细步骤&#xff0c;并设置开机自启。 步骤 1&#xff1a;修改系统参数 编辑系统参数并使其生效&#xff1a; vim /etc/sysctl.conf添加以下行&#xff1a; vm.max_…

Xpath元素定位和三大等待,三大切换

在页面的操作过程当中&#xff0c;都需要适当的等待。特别是&#xff1a; 候【发生了页面切换的时候】。而我们接下来的操作都是在变化的内容上。 代码就要等等页面的加载&#xff0c;等等页面的渲染。代码是非常快的&#xff0c;页面加载跟不 上&#xff0c;就需要等待。 三大…

getaway基本配置

Getaway 是一款用于容器化应用的轻量级 API 网关。它提供了一种简单的方式来管理和路由 API 请求&#xff0c;通常用于微服务架构中。以下是 Getaway 的基本配置指南&#xff0c;包括安装、配置文件示例、以及一些常见的配置选项。 ### 1. 安装 Getaway 通常通过 Docker 容器…

用友开发平台调用审核提示U8授权失败可能原因

U8授权失败可能有多种原因&#xff0c;这里有几个可能的解决方案供您参考&#xff1a; 登录接口未调用&#xff1a;在调用审核接口&#xff08;如audit、abandon、verify、unverify&#xff09;之前&#xff0c;请确保已经调用了登录接口&#xff08;login&#xff09;。如果登…

红队攻防渗透技术实战流程:云安全之云原生安全:K8s安全

红队云攻防实战 1.云原生-K8s安全-名词架构&各攻击点1.1 云原生-K8s安全-概念1.2 云原生-K8s安全-K8S集群架构解释1.2.1 K8s安全-K8S集群架构-Master节点1.2.2 K8s安全-K8S集群架构-Node节点1.2.3 K8s安全-K8S集群架构-Pod容器1.3 云原生安全-K8s安全-K8S集群攻击点 `(重点…

ARP基本原理

相关概念 ARP报文 ARP报文分为ARP请求报文和ARP应答报文&#xff0c;报文格式如图1所示。 图1 ARP报文格式 Ethernet Address of destination&#xff08;0–31&#xff09;和Ethernet Address of destination&#xff08;32–47&#xff09;分别表示Ethernet Address of dest…

【算法】前缀和——除自身以外数组的乘积

本节博客是用前缀和算法求解“除自身以外数组的乘积”&#xff0c;有需要借鉴即可。 目录 1.题目2.前缀和算法3.变量求解4.总结 1.题目 题目链接&#xff1a;LINK 2.前缀和算法 1.创建两个数组 第一个数组第i位置表示原数组[0,i-1]之积第二个数组第i位置表示原数组[i1,n-1]…

laravel8 JWT配置

一、安装JWT composer require tymon/jwt-auth二、config/app.php 注册服务提供者 providers > [Tymon\JWTAuth\Providers\LaravelServiceProvider::class, ]aliases > [JWTAuth > Tymon\JWTAuth\Facades\JWTAuth::class,JWTFactory > Tymon\JWTAuth\Facades\JWT…

Hadoop 客户端 FileSystem加载过程

如何使用hadoop客户端 public class testCreate {public static void main(String[] args) throws IOException {System.setProperty("HADOOP_USER_NAME", "hdfs");String pathStr "/home/hdp/shanshajia";Path path new Path(pathStr);Confi…

AWS安全性身份和合规性之Amazon Detective

分析和直观呈现安全数据&#xff0c;以调查潜在的安全问题。 Amazon Detective使您可以更轻松地分析、调查和快速确定潜在安全问题或可疑活动的根本原因。Amazon Detective会自动从您地AWS资源中收集日志数据并使用机器学习、统计分析和图论来构建一组关联的数据&#xff0c;使…

在DAYU200上实现OpenHarmony跳转拨号界面

一、简介 日常生活中&#xff0c;打电话是最常见的交流方式之一&#xff0c;那么如何在OpenAtom OpenHarmony&#xff08;简称“OpenHarmony”&#xff09;中进行电话服务相关的开发呢&#xff1f;今天我们可以一起来了解一下如何通过电话服务系统支持的API实现拨打电话的功能…

ECMAScript 详解

ECMAScript 是一种脚本语言规范&#xff0c;由欧洲计算机制造商协会&#xff08;ECMA&#xff09;通过 ECMA-262 标准化&#xff0c;广泛用于客户端脚本编程。它最著名的实现是 JavaScript&#xff0c;主要用于 Web 开发。以下是 ECMAScript 的详细解析&#xff1a; ### 1. 历…

C#中System.Threading.Timer的使用

文章速览 概述创建计时器对象循环执行的方法停止计时器参考文章 坚持记录实属不易&#xff0c;希望友善多金的码友能够随手点一个赞。 共同创建氛围更加良好的开发者社区&#xff01; 谢谢~ 概述 本文着重于System.Threading.Timer的简单使用方法。 由于在实际开发过程中&…

LabVIEW机械臂自动化在精密制造中的应用

精密制造是现代工业中的关键环节&#xff0c;要求高精度、高效率以及一致性。机械臂自动化技术结合LabVIEW软件&#xff0c;提供了强大的控制、数据处理和用户界面设计能力&#xff0c;使其在精密制造中得到了广泛应用。以下是几个具体的应用实例&#xff1a; 1. 电路板焊接 …

C#-根据日志等级进行日志的过滤输出

文章速览 概要具体实施创建Log系统动态修改日志等级 坚持记录实属不易&#xff0c;希望友善多金的码友能够随手点一个赞。 共同创建氛围更加良好的开发者社区&#xff01; 谢谢~ 概要 方便后期对软件进行维护&#xff0c;需要在一些关键处添加log日志输出&#xff0c;但时间长…

【408精华知识】指令周期的数据流

文章目录 一、取指周期二、间址周期三、执行周期&#xff08;一&#xff09;数据传送类指令(mov/load/store)&#xff08;二&#xff09;运算类指令(加/减/乘/除/移位/与/或)&#xff08;三&#xff09;转移类指令(jmp/jxxx) 四、中断周期 CPU每取出并且执行一条指令所需要的全…

二叉数之插入操作

首先是题目 给定二叉搜索树&#xff08;BST&#xff09;的根节点 root 和要插入树中的值 value &#xff0c;将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据 保证 &#xff0c;新值和原始二叉搜索树中的任意节点值都不同。 注意&#xff0c;可能存在多种有效…