Search code examples
stringgocharstring-concatenationmaxlength

How to concatenate follower characters to a string until a defined maximum length has been reached in Golang?


InputOutput
abc    abc___
a        a___    
abcdeabcde_

Attempt

package main

import "fmt"
import "unicode/utf8"

func main() {
    input := "abc"

    if utf8.RuneCountInString(input) == 1 {
        fmt.Println(input + "_____")
    } else if utf8.RuneCountInString(input) == 2 {
        fmt.Println(input + "____")
    } else if utf8.RuneCountInString(input) == 3 {
        fmt.Println(input + "___")
    } else if utf8.RuneCountInString(input) == 4 {
        fmt.Println(input + "__")
    } else if utf8.RuneCountInString(input) == 5 {
        fmt.Println(input + "_")
    } else {
        fmt.Println(input)
    }
}

returns

abc___

Discussion

Although the code is creating the expected output, it looks very verbose and devious.

Question

Is there a concise way?


Solution

  • The strings package has a Repeat function, so something like

    input += strings.Repeat("_", desiredLen - utf8.RuneCountInString(input))
    

    would be simpler. You should probably check that desiredLen is smaller than inpult length first.