String 更新循环中的字符串值

String 更新循环中的字符串值,string,for-loop,go,String,For Loop,Go,在执行for循环时,是否可以更新字符串的值 package main import ( "fmt" "strings" ) func Chop(r int, s string) string { return s[r:] } func main() { s:= "ThisIsAstring1ThisIsAstring2ThisIsAstring3" for strings.Contains(s, "string") { // Orig

在执行for循环时,是否可以更新字符串的值

package main 
import (
    "fmt"
    "strings"
)

func Chop(r int, s string) string {
    return s[r:]
}

func main() {
    s:= "ThisIsAstring1ThisIsAstring2ThisIsAstring3"
    for strings.Contains(s, "string") {
        // Original value > ThisIsAstring1ThisIsAstring2ThisIsAstring3
        fmt.Println(s)
        // I delete a part of the string > ThisIsAstring1
        remove := len(s)/3
        // Now, I update the value of string > string := ThisIsAstring2ThisIsAstring3
        s := Chop(remove, s)
        fmt.Println(s)
        break
    }
}

我不知道该怎么做。

我不知道用例是什么,但现在开始。让我们从识别代码中的问题开始:

// You cannot use a reserved keyword "string" as a variable name
string:= "ThisIsAstring1ThisIsAstring2ThisIsAstring3"
for strings.Contains(string, "string") {
    // Remove is a float, but you need to pass an int into your chop function
    remove := len(string)/3
    // You're reassigning your string variable. You really just want =, not :=
    string := Chop(remove, string)
    fmt.Println(string)
}
现在,这里有一个适用于您的用例的解决方案:

str := "ThisIsAstring1ThisIsAstring2ThisIsAstring3"
for strings.Contains(str, "string") {
    fmt.Println(str)
    remove := int(len(str) / 3)
    str = Chop(remove, str)
}
fmt.Println(str)
GoPlay:

您有几个问题;使用保留关键字作为变量,将浮点值作为int参数发送。。你有试过编译这个吗?我保证你发布的代码不会工作,不管有没有中断。我认为您缺少的主要内容是有一个新的变量字符串,而不是在循环之前分配旧的值。在字符串赋值中取:=并使用just=。我在您的答案之后做了更改。现在,它起作用了!非常感谢@william.taylor.09