Duke Dougal Duke Dougal - 2 months ago 10
Python Question

Can Golang multiply strings like Python can?

Python can multiply strings like 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
'########################'
>>>


Can Golang do the equivalent somehow?

Answer

It has a function instead of an operator, Repeat. Here's a port of your Python example:

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

Note that I've used utf8.RuneCountInString(x) instead of len(x); the former counts "runes" (Unicode code points), while the latter counts bytes. In the case of "my new text is this long", the difference doesn't matter since all the characters are only one byte, but it's good to get into the habit of specifying what you mean.

(In Python, len does both jobs depending on whether or not the string is a Unicode string; in Go, you have to pick the function to match the semantics you want.)