首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Go语言中常见100问题-#38 Misusing trim functions

Go语言中常见100问题-#38 Misusing trim functions

作者头像
数据小冰
发布于 2023-08-17 00:33:11
发布于 2023-08-17 00:33:11
22002
代码可运行
举报
文章被收录于专栏:数据小冰数据小冰
运行总次数:2
代码可运行
误用trim函数

很多Gopher常犯的一个错误是混合使用strings包中的 TrimRight 和 TrimSuffix 函数,因为这个两个函数提供的功能相似,极容易产生误用。下面通过具体的例子说明。

下面的代码使用 TrimRight 函数,这段代码的输出结果是啥?结果是123. 你猜想的也是123吗?如果不是,大概率你把TrimRight当成了TrimSuffix。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fmt.Println(strings.TrimRight("123oxo", "xo"))

TrimRight函数接收两个字符串参数,分别命名为字符串1和字符串2,它实现的功能是从字符串1的右边开始,且从右到左中间不包含其它字符的前提下,找到包含字符串2中所有的字符组合的部分将其删除,如果从右到左的过程中,遇到其它字符,则停止检索删除。

上面的代码中,字符串2是xo,包含x和o两个字符,所以从右向左在字符串123oxo中检索包含x和o的字符,并它将它们删除,检索过程遇到3停止。

TrimSuffix实现的功能是字符串后缀匹配截断,下面的代码输出结果是123o。因为123oxo以xo结尾。注意,该过程不是重复操作。例如,TrimSuffix("123xoxo", "xo")输出的结果是123xo.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fmt.Println(strings.TrimSuffix("123oxo", "xo"))

上述实现规则同样适用于 TrimLeft 和 TrimPrefix函数。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fmt.Println(strings.TrimLeft("oxo123", "ox")) // 123
fmt.Println(strings.TrimPrefix("oxo123", "ox")) /// o123

最后来分析 Trim 函数,该函数结合了 TrimLeft 和 TrimRight 两个函数功能,它将字符串中开头和结尾中含有裁剪的字符都去掉。下面的函数将字符串oxo123oxo开头和结尾中含有的字符o和x都去掉。输出的内容是123。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fmt.Println(strings.Trim("oxo123oxo", "ox")) // 123
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-06-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据小冰 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Go 语言常见错误——字符串
在 Go 语言中,字符串是最常见的数据类型之一,广泛用于处理文本数据。然而,许多开发者在操作字符串时容易犯一些常见错误,导致程序运行异常或性能问题。例如,字符串的不可变性、拼接操作的效率问题以及对字符编码的误解等,都是新手容易忽视的地方。
FunTester
2025/03/10
1890
Go 语言常见错误——字符串
Go 开发中strings库的trim函数详解
Go 语言的 strings 包中的 trim 相关函数为我们提供了灵活的字符串裁剪功能。通过熟练掌握这些函数,我们可以在开发过程中更高效地处理字符串,提升代码的简洁性和可读性。
运维开发王义杰
2023/09/09
3.7K0
Go 开发中strings库的trim函数详解
2018年Go语言实战笔记2string字符串处理time时间处理指针strconv 类型转换rand 随机数函数几个实例
接触一门新语言,了解其语法结构,常用的包是必须的,同时也是无聊的。有过其他编程语言基础的同学,学习go的语法很简单,参照 go文档 过一遍就能对go的语法有大致的了解。通过 go包文档 查阅常用包的使用
章鱼喵
2018/08/02
4030
2018年Go语言实战笔记2string字符串处理time时间处理指针strconv 类型转换rand 随机数函数几个实例
深度阅读之《100 Go Mistakes and How to Avoid Them》
继《Mastering Go》和《Concurrency in Go》[1]之后,这是我精读的第 3 本 Go 主题的英文书了。全书 390+ 页,从开始读到全部读完,快 2 个月了,😓。 前不久曹大连接发了几个关于《100 mistakes》的视频,多猜他大都是看看标题,看看代码,就知道要说什么了,并且很快就跳过去,速度飞快。我开始设想的是除了读懂内容,还想练习一下英语阅读,慢就慢吧。不过,我过后也确实加快了速度,毕竟人家半小时的进度我要两周,稍微有点离谱。 简单谈一下这本书:全书“凑”了 100 个关于
梦醒人间
2023/02/28
1.3K0
深度阅读之《100 Go Mistakes and How to Avoid Them》
【Go 基础篇】Go 语言字符串函数详解:处理字符串进阶
大家好!继续我们关于Go语言中字符串函数的探索。字符串是编程中常用的数据类型,而Go语言为我们提供了一系列实用的字符串函数,方便我们进行各种操作,如查找、截取、替换等。在上一篇博客的基础上,我们将继续介绍更多字符串函数的用法和示例。(*^_^*)💕💕💕💕
繁依Fanyi
2023/10/12
8010
【Go 基础篇】Go 语言字符串函数详解:处理字符串进阶
Go 语言基础--strings&strconv 浅析
string 是日常开发中最常用的一个结构,string 相关工具主要有strings & strconv,本篇就来看看这个两个工具。
邹志全
2019/07/31
3320
(二十一)golang--字符串中的函数
(5)字符串转[]bytes:var bytes = []byte("hello")
西西嘛呦
2020/08/26
6990
100 个 Go 错误以及如何避免:5~8
我们将在本章中看到 Go 有一个非常独特的处理字符串的方法。Go 引入了一个概念叫做符文;这个概念对于理解是必不可少的,可能会让新手感到困惑。一旦我们知道了字符串是如何被管理的,我们就可以避免在字符串上迭代时的常见错误。我们还将看看 Go 开发者在使用或生成字符串时所犯的常见错误。此外,我们会看到有时我们可以直接使用[]byte工作,避免额外的分配。最后,我们将讨论如何避免一个常见的错误,这个错误会造成子字符串的泄漏。本章的主要目的是通过介绍常见的字符串错误来帮助你理解字符串在 Go 中是如何工作的。
ApacheCN_飞龙
2023/10/13
1.1K0
100 个 Go 错误以及如何避免:5~8
Go语言中常见100问题-#40 Useless string conversions
当编码操作的类型既可以是 []byte 又可以是 string时,大多数程序员倾向使用string类型,因为这样可能更方便。但是大多数的 I/O 操作采用的类型是 []byte。例如 io.Reader、io.Writer 和 io.ReadAll. 如果拿到的类型是string,但又要使用这些接口意味着需要进行类型转换,strings包提供了相关的转换函数。
数据小冰
2023/08/17
1540
Go语言中常见100问题-#40 Useless string conversions
『Go 内置库第一季:strings』
这一季的系列主题,主要围绕内置库进行。如果一个人写的代码比你的赞,那么他对内置库的熟悉程度一定比你强。
谢伟
2018/12/05
5080
Go 编程 | 连载 04 - 字符与字符串类型
Go 默认使用 Unicode 字符集并使用 UTF-8 作为编码方式。Go 中没有字符类型,而是使用 byte 类型和 rune 类型来表示字符。
RiemannHypothesis
2022/09/26
3260
Go 编程 | 连载 04 - 字符与字符串类型
【愚公系列】2022年08月 Go教学课程 040-字符串处理
文章目录 前言 一、字符串处理函数 1.len() 2.Atoi() 3.Itoa() 4.字符串转[]byte 5.byte[]转字符串 6.FormatInt() 7.Contains() 8.Count() 9.EqualFold() 10.Index() 11.LastIndex() 12.Replace() 13.Split() 14.ToLower()和ToUpper() 15.TrimSpace() 16.Trim() 17.HasPrefix() 18.join() 19.Repeat(
愚公搬代码
2022/09/21
3410
使用Go语言批量同步微信读书笔记到Flomo
👆点击“博文视点Broadview”,获取更多书讯 “微信读书”和“Flomo”是我们常用的阅读和卡片记忆法软件。 在实际使用时,我们经常会有这样的需求:将微信读书中划线的笔记导入Flomo。传统的做法是先复制文字内容,然后打开Flomo,粘贴文字内容,输入适当的标签后保存,然后回到微信读书中继续阅读。 这一套动作下来,不仅要点击和切换好几次,连续阅读的体验也被破坏了。 恰好,Flomo提供了API,允许开发者通过API添加内容。按照官方文档的指引,使用Go语言就可以实现将微信读书中的笔记批量同步到Flo
博文视点Broadview
2022/08/26
1.2K0
使用Go语言批量同步微信读书笔记到Flomo
go语言goquery下载图片实例「建议收藏」
cd $GOPATH/bin 编译:go build crawl 运行:./crawl –img_path=/data/pic
全栈程序员站长
2022/07/25
4120
【转】Go语言---strings包(字符串操作)
字符串求长度 求子串 是否存在某个字符或者子串 子串出现的次数(字符串匹配) 字符串分割(切分)成[]string 字符串是否存在某个前缀或后缀 字符或者子串在字符串中首次出现的位置或最后一次出现的位置 通过某个字符串将[]string进行拼接 字符串重复次数 字符串中子串替换 大小写转换 ......................等等一些基本操作。 由于string类型可以看成是一种特殊的slice类型,因此获取长度可以用内置的函数len;同时支持 切片 操作,因此,子串获取很容易。
yiduwangkai
2019/09/17
1K0
Go 字符串处理
因为字符串类型在Go中是不可改变的,因此每次操作实际都要新分配字符串,所以在字符串比较多的时候效率不高。
孤烟
2020/09/27
8180
转--Go语言常用字符串处理方法实例汇总
package main import ( "fmt" "strings" //"unicode/utf8" ) func main() { fmt.Println("查找子串是否在指定的字符串中") fmt.Println(" Contains 函数的用法") fmt.Println(strings.Contains("seafood", "foo")) //true fmt.Println(strings.Contains("seafood", "
李海彬
2018/03/20
7980
Golang深入浅出之-Go语言字符串操作:常见函数与面试示例
字符串是编程中不可或缺的数据类型,Go语言提供了丰富的字符串操作函数,方便开发者处理文本数据。本文将深入浅出地介绍Go语言中常见的字符串函数,结合面试示例,剖析相关常见问题与易错点,并附上代码示例,帮助读者深化理解与应用。
Jimaks
2024/04/23
7100
Go错误集锦 | 字符串底层原理及常见错误
string是Go语言的基础类型,在实际项目中针对字符串的各种操作使用频率也较高。本文就介绍一下在使用string时容易犯的一些错误以及如何避免。
Go学堂
2023/01/31
4180
Go小技巧&易错点100例(十六)
在Go语言中,切片(slice)是一个引用类型,它是对底层数组的抽象表示,提供了动态长度的、灵活的序列类型。切片包含三个重要的属性:指向底层数组的指针、切片的长度以及切片的容量。
闫同学
2024/04/26
2190
推荐阅读
相关推荐
Go 语言常见错误——字符串
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验