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

Go语言实现单词反转并保留首字母大写报错求助

问题分析与解决

错误原因

Go语言里的字符串是不可变类型,你代码里的word是string类型,通过word[j]访问到的是byte值的副本,并非指向原字符串的可修改引用,所以直接对word[j]赋值会触发编译错误。

修复方案

把要修改的字符串先转换成[]byte切片(切片是可变的),修改完成后再转回string即可。同时还要修正代码里的两个小问题:

  • 最后拼接字符串时的判断条件错误:i==len(stringArray)应该改成i == len(stringArray)-1,否则最后会多一个空格
  • 变量名拼写错误:revered应该是reversed

修改后的完整代码

package main

import (
    "fmt"
)

func main() {
    //Input - This Is Test
    //Output - Siht Si Tset

    s := "This Is Test"
    reversed := reverseString(s)
    fmt.Println(reversed)
}

func reverseString(input string) string {
    stringArray := convertToArray(input)
    finalWord := ""
    for i := 0; i < len(stringArray); i++ {
        reversedWord := ""
        // 将string转为[]byte,允许修改元素
        wordBytes := []byte(stringArray[i])
        wordLen := len(wordBytes)
        for j := wordLen - 1; j >= 0; j-- {
            // 反转后原单词的最后一位变成新单词的第一位,需要转大写
            if wordBytes[j] >= 97 && wordBytes[j] <= 122 && j == wordLen-1 {
                wordBytes[j] -= 32
            }
            // 反转后原单词的第一位变成新单词的最后一位,需要转小写
            if wordBytes[j] >= 65 && wordBytes[j] <= 90 && j == 0 {
                wordBytes[j] += 32
            }
            reversedWord += string(wordBytes[j])
        }
        // 修正判断条件,避免最后多一个空格
        if i == len(stringArray)-1 {
            finalWord += reversedWord
        } else {
            finalWord += reversedWord + " "
        }
    }
    return finalWord
}

func convertToArray(input string) []string {
    stringSlice := []string{}
    newStr := ""
    for i := 0; i < len(input); i++ {
        if string(input[i]) == " " {
            stringSlice = append(stringSlice, newStr)
            newStr = ""
        } else {
            newStr += string(input[i])
        }
    }
    // 把最后一个单词加入切片(原count变量无意义)
    if newStr != "" {
        stringSlice = append(stringSlice, newStr)
    }
    return stringSlice
}

额外优化说明

原convertToArray函数里的count变量完全多余,直接判断newStr是否为空来追加最后一个单词更简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 14:01:40