2017-08-03 2 views
1

Ich versuche, eine for-Schleife zu stoppen, wenn eine Zeichenfolge eine bestimmte Zahl enthält. Das einzige Problem ist, dass es nach dem Hinzufügen von 31 zum Zähler keinen Wert mehr zur Zeichenkette hinzufügt. Ich glaube, es wird schnell werden, bevor es aufholen kann. Ich weiß, dass es immer einen anderen Weg gibt, um die Aufgabe zu erledigen, aber ich möchte nur verstehen, warum es das tut.Golang für Schleife läuft weiter

Was ich versuche zu erreichen, ist der Zähler als die Höhe handeln. Die theSlice = 8 und webSlices ist eine Liste. Der ganze Text sagt "Höhe ist eine 1", also versuche ich zu sehen, welche Zahl die Höhe ist und mache den Zähler gleich.

Code:

func breakDownSlice(theSlice int, webSlices []string) { 
counter := 0 
done := false 
for done == false { 
    log.Println(webSlices[theSlice]) 
    log.Println(counter) 
    done = strings.Contains(webSlices[theSlice], string(counter)) 
    if done == true { 
     log.Printf("The height is %d", counter) 
    } else { 
     counter++ 
    } 
} 
} 
+0

Eingabe teilen können und die Ausgabe Sie bekommen? Was ist der Wert von 'webSlices [theSlice]'? – smarx

+0

WebSlices [theSlice] = „Höhe ist ein 1“ Ausgang ist „Die Höhe ist 1“ und geht weiter zu „Die Höhe 32“ Es befindet sich auf 1 aufhören sollte, aber es geht bis 32. – GoofBall101

+0

Wenn das der Ausgang ist , dann kann das nicht der Code sein, den du gerade betreibst, oder? Ich sehe nicht, wie die '% d'-Formatierung' 1-32' erzeugen könnte. – smarx

Antwort

1

die Linie

done = strings.Contains(webSlices[theSlice], string(counter)) 

string(counter) kann hier nicht arbeiten, verwenden strconv.Itoa(counter) statt

+0

Ja repariert es sofort. Danke – GoofBall101

+0

@ GoofBall101 dann setze meine Antwort bitte als Antwort auf deine Frage –