用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

相关文章
|
1月前
|
并行计算 Go C++
2182.构造限制重复的字符串(模拟 贪心 优先队列 C++ Go)
【2月更文挑战第19天】2182.构造限制重复的字符串(模拟 贪心 优先队列 C++ Go)
23 1
|
1月前
|
Go C++
【力扣】2696. 删除子串后的字符串最小长度(模拟 栈 C++ Go实现栈)
【2月更文挑战第18天】2696. 删除子串后的字符串最小长度(模拟 栈 C++ Go实现栈)
34 6
|
4月前
|
安全 Java 编译器
Go 字符串拼接方式
Go 字符串拼接方式
24 0
|
5月前
|
Go
go string to int 字符串与整数型的互换
go string to int 字符串与整数型的互换
34 0
|
7月前
|
存储 编译器 Go
Go 语言内置类型全解析:从布尔到字符串的全维度探究
Go 语言内置类型全解析:从布尔到字符串的全维度探究
52 0
|
1月前
|
Go C++
【力扣】2645. 构造有效字符串的最小插入数(动态规划 贪心 滚动数组优化 C++ Go)
【2月更文挑战第17天】2645. 构造有效字符串的最小插入数(动态规划 贪心 滚动数组优化 C++ Go)
31 8
|
6月前
|
Go
一行代码处理字符串,Go语言链式调用技术深度指南
一行代码处理字符串,Go语言链式调用技术深度指南
81 0
|
4月前
|
存储 Go
解析 Go 编程语言数据类型:bool、整数、浮点数和字符串详细介绍
数据类型是编程中的重要概念。数据类型指定了变量值的大小和类型。Go是静态类型的,这意味着一旦变量类型被定义,它只能存储该类型的数据。
60 0
解析 Go 编程语言数据类型:bool、整数、浮点数和字符串详细介绍
|
4月前
|
存储 Go
Go 语言的基础数据类型:整数类型、浮点数类型、布尔类型、字符串类型等
Go 语言的基础数据类型:整数类型、浮点数类型、布尔类型、字符串类型等
40 0
Go 语言的基础数据类型:整数类型、浮点数类型、布尔类型、字符串类型等
|
6月前
|
Go
Go语言strconv不会? 字符串转换直看这里
Go语言strconv不会? 字符串转换直看这里
20 0

热门文章

最新文章