用Go实现字符串的逆序

简介: 用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


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


第二次循环时将第二个值跟倒数第二值进行调换

image.png

这就是这块代码的意义所在


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


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


然后把第一个索引的字符串改为我们第一步保存的值 同理 让第一个值等于最后一个值


image.png

在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)
}


执行俩个代码,检测是否可行


image.png

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

假设我们想调试一下这几个值的时候,就会发现go会直接报出一个变量没有使用的错误。这种写法在PHP中是不存在报错的,这个错误就会导致go的程序编译无法通过

image.png

那么我们应该如何模拟已经使用了这个值呢!


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


这时就可以使用debug来调试了我们想要得值了

image.png

相关文章
|
6月前
|
Go C++
【力扣】2696. 删除子串后的字符串最小长度(模拟 栈 C++ Go实现栈)
【2月更文挑战第18天】2696. 删除子串后的字符串最小长度(模拟 栈 C++ Go实现栈)
59 6
|
6月前
|
并行计算 Go C++
2182.构造限制重复的字符串(模拟 贪心 优先队列 C++ Go)
【2月更文挑战第19天】2182.构造限制重复的字符串(模拟 贪心 优先队列 C++ Go)
49 1
|
6月前
|
安全 Java 编译器
Go 字符串拼接方式
Go 字符串拼接方式
56 0
go string to int 字符串与整数型的互换
go string to int 字符串与整数型的互换
67 0
|
6月前
|
供应链 Go C语言
掌握Go语言:探索Go语言基础,字符串连接、关键字、空格、格式化字符串的重要性(7)
掌握Go语言:探索Go语言基础,字符串连接、关键字、空格、格式化字符串的重要性(7)
|
2月前
|
Go
Go字节数组与字符串相互转换
Go字节数组与字符串相互转换
36 3
|
2月前
|
存储 Go
go语言字符串变小写
go语言字符串变小写
|
3月前
|
Go 开发者
|
3月前
|
JSON Go 数据格式
Go实现json字符串与各类struct相互转换
文章通过Go语言示例代码详细演示了如何实现JSON字符串与各类struct之间的相互转换,包括结构体对象生成JSON字符串和JSON字符串映射到struct对象的过程。
30 0
|
5月前
|
Go
【golang】Go 判断字符串是否包含指定字符
【golang】Go 判断字符串是否包含指定字符
77 1