Im folgenden Code, ich Iterieren über eine string
Rune von Rune, aber ich brauche tatsächlich eine int
, um einige Prüfsummenberechnung durchzuführen. Muss ich die rune
wirklich in eine []byte
kodieren, dann in eine string
umwandeln und dann Atoi
verwenden, um eine int
aus der rune
zu bekommen? Ist das der idiomatische Weg, es zu tun?Konvertiere Rune in int?
// The string `s` only contains digits.
var factor int
for i, c := range s[:12] {
if i % 2 == 0 {
factor = 1
} else {
factor = 3
}
buf := make([]byte, 1)
_ = utf8.EncodeRune(buf, c)
value, _ := strconv.Atoi(string(buf))
sum += value * factor
}
Auf dem Spielplatz: http://play.golang.org/p/noWDYjn5rJ
Danke, aber das ist nicht ganz das, was ich will. Du initialisierst die Rune mit 42 - das würde nach meiner ASCII-Tabelle das Zeichen '*' ergeben. Was ich bekomme, ist eine Zeichenkette und "Range" ergibt Runen, die den Charakter darstellen. Wenn int auf der Rune verwendet wird, würde ich den Wert der Repräsentation angeben, nicht den Wert * display *, den ich brauche. Ich habe einen kurzen Ausschnitt gemacht, der auf den Unterschied hinweist: http://play.golang.org/p/JLlmKnddGv – miku
@miku: siehe meine überarbeitete Antwort. – peterSO
Ah, schöner Trick. Ich weiß nicht, warum deine Antwort abgelehnt wurde. – miku