# Golang : Repeat a character by multiple of x factor

In Python, it is pretty easy to repeat some characters inside a string. All you need to do is to multiply the letter with an integer value and the letter will be multiplied/repeated by x number of times

For example:

`````` str = ''.join(['a' * 1, 'b' * 1, 'c' * 2, 'd' * 3, 'e' * 2, 'f' * 4, \
'g' * 5, 'h' * 6, 'i' * 3, 'j' * 7, 'k' * 8, 'l' * 9, 'm' * 10, \
'n' * 11, 'o' * 4, 'p' * 12, 'q' * 13, 'r' * 14, 's' * 15, \
't' * 16, 'u' * 5, 'w' * 17, 'y' * 18, 'z' * 19])
``````

will produce:

`````` abccdddeeffffggggghhhhhhiiijjjjjjjkkkkkkkklllllllllmmmmmmmmmmnnnnnnnnnnnoo
wwwwwwwwwwwwwwwwyyyyyyyyyyyyyyyyyyzzzzzzzzzzzzzzzzzzz
``````

However, it is not permissible to multiply a letter with integer in Golang. Doing so will generate error such as `invalid operation: "join" * 2 (mismatched types string and int)`.

To create multiple instances/repeatition of a letter in Golang, you will have to use the `strings.Repeat()` function.

Example:

`````` package main

import (
"fmt"
"strings"
)

func main() {
str := []string{"a", "b", "c", "d", "e"}

fmt.Println(strings.Join(str, " "))

// Python way of repeating string by multiple of x will
// not work here
//str2 := []string{"a" * 2, "b", "c", "d", "e"}

// Golang's way of multiplying a string by x factor
str2 := []string{strings.Repeat("a", 2), "b", "c", "d", "e"}

fmt.Println(strings.Join(str2, " "))

a2 := strings.Repeat("a", 2)
b3 := strings.Repeat("b", 3)
c4 := strings.Repeat("c", 4)
d5 := strings.Repeat("d", 5)
e9 := strings.Repeat("e", 9)
str3 := []string{a2, b3, c4, d5, e9}

fmt.Println(strings.Join(str3, " "))
}
``````

Output:

a b c d e

aa b c d e

aa bbb cccc ddddd eeeeeeeee

References:

https://www.socketloop.com/tutorials/golang-how-to-join-strings