Kann Golang multiplizieren Zeichenfolgen wie Python kann?
Python können strings multiplizieren und zwar so:
Python 3.4.3 (default, Mar 26 2015, 22:03:40)
[GCC 4.9.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> x = 'my new text is this long'
>>> y = '#' * len(x)
>>> y
'########################'
>>>
Kann Golang machen Sie das gleiche irgendwie?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es hat eine Funktion anstelle von einem Betreiber,
strings.Repeat
. Hier ist ein port des Python-Beispiel, das Sie ausführen können,hier:Beachten Sie, dass ich verwendet habe,
utf8.RuneCountInString(x)
stattlen(x)
; der erste zählt "runes" (Unicode code points), während die letzteren zählt bytes. Im Fall von"my new text is this long"
, der Unterschied spielt keine Rolle, da alle Zeichen nur ein byte, aber es ist gut zu bekommen in die Gewohnheit, die angeben, welche du meinst:(In Python 2,
len
zählt bytes, die auf reinen strings und Runen auf Unicode-strings (u'...'
):In Python 3, plain Saiten sind Unicode-Zeichenfolgen und
len
zählt Runen; wenn Sie wollen, um count bytes, die Sie codieren, die Zeichenfolge in einebytearray
erste:In Go, es gibt nur eine Art von string. So dass Sie nicht haben, um zu konvertieren, aber Sie haben zu wählen die Funktion entspricht der Semantik, die Sie wollen.)
Ja, es kann, wenn auch nicht mit einem operator, sondern eine Funktion in der Standardbibliothek.
Wäre es sehr einfach, mit einer einfachen Schleife, aber die standard-Bibliothek bietet Ihnen eine hoch optimierte version davon:
strings.Wiederholen()
.Deinem Beispiel:
Versuchen Sie es auf die Gehen Spielplatz.
Hinweise:
len(x)
ist die "bytes" Länge (Anzahl der bytes) der Zeichenfolge (im UTF-8-Codierung, dies ist, wie Gehen Sie speichert strings im Speicher). Wenn Sie möchten die Anzahl der Zeichen (Runen), verwenden Sieutf8.RuneCountInString()
.Yup. Die Streicher-Paket hat eine
Repeat
- Funktion.