Go 无法分配给v[i],引用数组问题?
我正试图解决一个难题来练习围棋。但是,我有点卡住了,这个错误对我没有多大帮助 ./prog.go:22:23:无法分配给v[j] ./prog.go:22:23:无法分配给v[wLen-1-j]Go 无法分配给v[i],引用数组问题?,go,Go,我正试图解决一个难题来练习围棋。但是,我有点卡住了,这个错误对我没有多大帮助 ./prog.go:22:23:无法分配给v[j] ./prog.go:22:23:无法分配给v[wLen-1-j] func自旋词(str字符串)字符串{ ws:=strings.Split(str,“”) 对于i:=0;i4{ 对于j:=0;j
func自旋词(str字符串)字符串{
ws:=strings.Split(str,“”)
对于i:=0;i4{
对于j:=0;j
这里几乎可以工作的代码:您不能分配给
v
的元素,因为v
是一个字符串,字符串是不可变的。您可以先将字符串转换为[]字节
,然后再处理其中的元素,但如果字符串包含多字节字符,则不安全
v:=[]byte(ws[i])
或者,您可以将字符串转换为[]符文
,并使用它:
v:=[]rune(ws[i])
然后,您可以分配给v
的元素,完成后,将其转换回字符串:
str:=string(v)
如果要执行该操作,则必须将单词从字符串转换为[]符文 此代码有效:)
主程序包
进口(
“fmt”
“字符串”
)
func main(){
结果:=SpinWords(“欢迎来到丛林,我们得到了乐趣和游戏”)
fmt.Println(结果)
}
func自旋字(str字符串)字符串{
ws:=strings.Split(str,“”)
对于i:=0;i4{
文石:=[]文石(v)
对于j:=0;j
这是否回答了您的问题?啊,当然。这是有道理的。谢谢你的帮助:)
str:=string(v)
package main
import (
"fmt"
"strings"
)
func main() {
result := SpinWords("Welcome to the jungle we got fun and games")
fmt.Println(result)
}
func SpinWords(str string) string {
ws := strings.Split(str, " ")
for i := 0; i < len(ws); i++ {
v := ws[i]
wLen := len(v)
if wLen > 4 {
vinrune := []rune(v)
for j := 0; j < wLen/2; j++ {
vinrune[j], vinrune[wLen-1-j] = vinrune[wLen-1-j], vinrune[j]
}
v = string(vinrune)
ws[i] = v
}
}
return strings.Join(ws, " ")
}