Ответ 1
Он имеет функцию вместо оператора, strings.Repeat
. Вот пример порта вашего Python:
package main
import (
"fmt"
"strings"
"unicode/utf8"
)
func main() {
x := "my new text is this long"
y := strings.Repeat("#", utf8.RuneCountInString(x))
fmt.Println(y)
}
Обратите внимание, что я использовал utf8.RuneCountInString(x)
вместо len(x)
; первый подсчитывает "руны" (кодовые точки Юникода), а последний подсчитывает байты. В случае "my new text is this long"
разница не имеет значения, так как все символы являются только одним байтом, но хорошо привыкнуть указывать, что вы имеете в виду.
(В Python 2 len
подсчитывает байты на простых строках и рунах в строках Unicode (u'...'
). В Python 3, простые строки - это строки Unicode и len
подсчитывает руны; если вы хотите подсчитать байты, вы должны закодировать строку в bytearray
. В Go есть только один тип строки, и вам не нужно преобразовывать, но вам нужно выбрать функцию, которая соответствует семантике вы хотите.)