用Go实现字符串的逆序

举报
原来是咔咔 发表于 2022/03/26 22:33:10 2022/03/26
1.5k+ 0 0
【摘要】 本文使用Go来实现字符串逆序这个功能,用最简单的话术让你理解 附带在Go中debug的小技巧 例如:Hello 转换为 olleH 一、实现字符串的逆序 在go中,字符串要根据索引获取值是需...

本文使用Go来实现字符串逆序这个功能,用最简单的话术让你理解
附带在Go中debug的小技巧
例如:Hello 转换为 olleH

一、实现字符串的逆序

在go中,字符串要根据索引获取值是需要转为字节的。接下来我们看一个实现代码

代码应该都看的明白,下面咔咔用图解来帮助解释一下

package main

import (
	"fmt"
)

func stringReverse() {
	var str = "Hello"
	// 字符串转字节
	var bytes []byte = []byte(str)
	for i := 0; i < len(str)/2; i++ {
		// 定义一个变量存放从后往前的值
		tmp := bytes[len(str)-i-1]
		// 从后往前的值跟从前往后的值调换
		bytes[len(str)-i-1] = bytes[i]
		// 从前往后的值跟从后往前的值进行调换
		bytes[i] = tmp
	}
	str = string(bytes)
	fmt.Println(str)
}

  

这段代码可以看到循环的最大次数就是将字符串的长度除了2

在这副图中我们可以看到第一次循环时是将第一字符串跟最后一个字符串进行调换

第二次循环时将第二个值跟倒数第二值进行调换
在这里插入图片描述
这就是这块代码的意义所在

先将索引最后的字符串的值拿出来

接着让最后索引的字符串跟第一个索引字符串相等 也就是上图中第一个步骤 让最后一个值跟等于第一个值

然后把第一个索引的字符串改为我们第一步保存的值 同理 让第一个值等于最后一个值
在这里插入图片描述

在go中还有好几种实现这个过程,这里咔咔在提供一种供大家参考

这种方式需要引入包strings,也是官方推荐的一种方式

func stringReverse1() {
	var str = "hello"
	var bytes []byte = []byte(str)
	var build strings.Builder
	for i := 0; i < len(bytes); i++ {
		i2 := bytes[len(bytes)-i-1]
		build.WriteString(string(i2))
	}
	s3 := build.String()
	fmt.Println(s3)
}

  

执行俩个代码,检测是否可行
在这里插入图片描述

二、给你一个小技巧让你在用Go的Debug时游刃有余

假设我们想调试一下这几个值的时候,就会发现go会直接报出一个变量没有使用的错误。这种写法在PHP中是不存在报错的,这个错误就会导致go的程序编译无法通过
在这里插入图片描述
那么我们应该如何模拟已经使用了这个值呢!

可以使用一个底杠来解决这个问题

这时就可以使用debug来调试了我们想要得值了
在这里插入图片描述

坚持学习、坚持写博、坚持分享是咔咔从业以来一直所秉持的信念。希望在诺大互联网中咔咔的文章能带给你一丝丝帮助。

文章来源: blog.csdn.net,作者:咔咔-,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/fangkang7/article/details/107384229

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。