2017-05-11 5 views
-1

Ist es möglich, den Wert einer Zeichenfolge zu aktualisieren, wenn wir eine for-Schleife ausführen?Aktualisieren Sie einen String-Wert in Schleife

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 
    } 
} 

Ich weiß nicht, wie es geht.

+3

Sie haben mehrere Fragen; Verwenden Sie ein reserviertes Schlüsselwort als Variable und senden Sie einen Gleitkomma als int-Parameter. Haben Sie das überhaupt versucht? –

+3

Ich garantiere, dass der von Ihnen gepostete Code nicht funktioniert, unabhängig vom Vorhandensein einer Unterbrechung. Ich denke, die Hauptsache, die Sie vermissen, ist, dass Sie eine neue Variable "string" haben, anstatt den alten Wert (vor der Schleife) zuzuweisen. Take von: = bei der String-Zuweisung und verwende nur =. –

Antwort

5

Ich habe keine Ahnung, was der Anwendungsfall ist, aber hier geht. Beginnen wir mit der Identifizierung der Probleme in Ihrem Code starten:

// 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) 
} 

Nun, hier ist eine Lösung, die für Ihren Anwendungsfall funktioniert:

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

GoPlay: https://play.golang.org/p/NdROIFDS_5

+0

Ich habe die Änderungen nach Ihrer Antwort vorgenommen. Jetzt funktioniert es! Vielen Dank @ william.taylor.09 – icarbajo

Verwandte Themen