String 更新循环中的字符串值
在执行for循环时,是否可以更新字符串的值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
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