How to count leading spaces in a string in Go

The best way to count the number of spaces before the first non-space character of a string in Go is by using the strings.TrimLeft function as shown below:

func countLeadingSpaces(line string) int {
	return len(line) - len(strings.TrimLeft(line, " "))
}

func main() {
	str := "   This is a string"
	fmt.Println(countLeadingSpaces(str)) // 3
}

Run this example on the Go playground

The countLeadingSpaces function above trims all the leading space characters from the original string and subtracts the length of the result from the length of the original to derive the number of leading spaces.

Another option is to iterate over each character in the string and increment a counter until the first non space character is encountered:

func countLeadingSpaces(line string) int {
	count := 0
	for _, v := range line {
		if v == ' ' {
			count++
		} else {
			break
		}
	}

	return count
}

func main() {
	str := "   This is a string"
	fmt.Println(countLeadingSpaces(str)) // 3
}

Run this example on the Go playground

Thanks for reading, and happy coding!