登录
首页 >  Golang >  Go问答

解决在 Go 循环中发生的特定运行时错误

来源:stackoverflow

时间:2024-03-21 17:51:34 440浏览 收藏

本文讨论了如何解决 Go 循环中出现的特定运行时错误,即索引超出范围。文中给出了一个示例函数 `transform()`,该函数在循环内部处理异常情况,而不是返回函数。正确处理后,函数将为每个 `x` 连接到结果中,并返回修改后的字符串。

问题内容

我想在以下循环中捕获 panic: 运行时错误:索引超出范围 (在函数内部而不返回),并为每个 x 连接到结果:

func transform(inputString string, inputLength int) string {
    var result = ""
    for index := 0; index < inputLength; index++ {
        if string(inputString[index]) == " " {
            result = result + "%20"
        } else {
            result = result + string(inputString[index])
        }
    }
    return result
}

例如,对于 inputstring = mr smithinputlength = 10resultmr%20smithxx。它有两个 x,因为 10 - 8 = 2

我知道我可以捕获从 transform() 返回时的恐慌,但我想在循环内处理它而不返回函数。


正确答案


inputstring = mr smith 且 inputlength = 10 结果为 mr%20smithxx。它有两个 x,因为 10 - 8 = 2。

package main

import "fmt"

func transform(s string, tlen int) string {
    t := make([]byte, 0, 2*tlen)
    for _, b := range []byte(s) {
        if b == ' ' {
            t = append(t, "%20"...)
        } else {
            t = append(t, b)
        }
    }
    for x := tlen - len(s); x > 0; x-- {
        t = append(t, 'x')
    }
    return string(t)
}

func main() {
    s := "mr smith"
    tlen := 10
    fmt.printf("%q %d\n", s, tlen)
    t := transform(s, tlen)
    fmt.printf("%q\n", t)
}

https://go.dev/play/p/wg7MIO8yUzF

"Mr Smith" 10
"Mr%20SmithXX"

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《解决在 Go 循环中发生的特定运行时错误》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>