You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Golang实现qwerty转abcdef解密函数触发index out of range错误求解

错误原因
  • Go 语言 for _, val := range slice 语法中,val 是切片元素本身的值,不是元素下标。你代码中遍历到第一个字符'q'时,i 的值是'q'对应的ASCII码113,用113作为下标访问长度远小于113的encrStrng切片,直接触发索引越界panic。
  • 另外你代码中case 'q' 后缺少Go语法要求的冒号,也会导致编译失败。
修复方案

推荐直接使用遍历拿到的字符值做判断,同时用strings.Builder优化字符串拼接性能,修复后代码如下:

import "strings"

func Decrypt(strToDecrypt string) string {
	encrStrng := []rune(strings.ToLower(strToDecrypt))
	var decrStrng strings.Builder

	for _, c := range encrStrng {
		switch c {
		case 'q':
			decrStrng.WriteRune('a')
		case 'w':
			decrStrng.WriteRune('b')
		case 'e':
			decrStrng.WriteRune('c')
		case 'r':
			decrStrng.WriteRune('d')
		case 't':
			decrStrng.WriteRune('e')
		case 'y':
			decrStrng.WriteRune('f')
		// 其余映射规则按需求补全
		default:
			decrStrng.WriteRune(c)
		}
	}
	return decrStrng.String()
}

如果确实需要通过下标访问字符,可修改遍历写法为:

for idx := range encrStrng {
    switch encrStrng[idx] {
    // 逻辑同上
    }
}

内容的提问来源于stack exchange,提问作者E3bones

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 10:06:03