Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 无法分配给v[i],引用数组问题?_Go - Fatal编程技术网

Go 无法分配给v[i],引用数组问题?

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

我正试图解决一个难题来练习围棋。但是,我有点卡住了,这个错误对我没有多大帮助

./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

这里几乎可以工作的代码:

您不能分配给
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, " ")
}