How to find the Indices of All Occurrences of Substring in Go - Step by Step Examples
How to find the Indices of All Occurrences of Substring in Go ?
Answer
To find the indices of all occurrences of a substring in Go, you can iterate through the string and use the strings.Index function.
✐ Examples
1 Find Indices of All Occurrences of Substring in String
In this example,
- We import the 
fmtandstringspackages. - We define a function named 
findAllIndicesthat takes two strings,strandsubstr, as parameters. - We initialize an empty slice of integers named 
indicesto store the starting indices of each occurrence of the substring. - We use a loop to search for the substring within the string using the 
strings.Indexfunction, starting from a given index. - Inside the loop, we append the found index to the 
indicesslice and update the starting index for the next search to be after the current occurrence. - The loop continues until no more occurrences are found.
 - We return the 
indicesslice. - In the 
mainfunction, we define a stringstrand a substringsubstrwith specific values. - We call the 
findAllIndicesfunction withstrandsubstrand store the result in the variableindices. - Finally, we print the 
indicesto standard output. 
Go Program
package main
import (
    "fmt"
    "strings"
)
func findAllIndices(str, substr string) []int {
    var indices []int
    index := strings.Index(str, substr)
    for index != -1 {
        indices = append(indices, index)
        index = strings.Index(str[index+len(substr):], substr)
        if index != -1 {
            index += indices[len(indices)-1] + len(substr)
        }
    }
    return indices
}
func main() {
    str := "Hello World, Hello Universe, Hello Go"
    substr := "Hello"
    indices := findAllIndices(str, substr)
    fmt.Println("Indices of all occurrences:", indices)
}Output
Indices of all occurrences: [0 13 29]
2 Find Indices of All Occurrences of Another Substring
In this example,
- We import the 
fmtandstringspackages. - We use the same 
findAllIndicesfunction to find all occurrences of a substring within a string. - In the 
mainfunction, we define a different stringstrand a different substringsubstrwith specific values. - We call the 
findAllIndicesfunction withstrandsubstrand store the result in the variableindices. - Finally, we print the 
indicesto standard output. 
Go Program
package main
import (
    "fmt"
    "strings"
)
func findAllIndices(str, substr string) []int {
    var indices []int
    index := strings.Index(str, substr)
    for index != -1 {
        indices = append(indices, index)
        index = strings.Index(str[index+len(substr):], substr)
        if index != -1 {
            index += indices[len(indices)-1] + len(substr)
        }
    }
    return indices
}
func main() {
    str := "Go is great. Go is fast. Go is fun."
    substr := "Go"
    indices := findAllIndices(str, substr)
    fmt.Println("Indices of all occurrences:", indices)
}Output
Indices of all occurrences: [0 13 25]
Summary
In this tutorial, we learned How to find the Indices of All Occurrences of Substring in Go language with well detailed examples.
More Go Strings Tutorials
- How to Create an Empty String in Go ?
 - How to get Length of String in Go ?
 - How to get Character at Specific Index in String in Go ?
 - How to get First Character in String in Go ?
 - How to get Last Character in String in Go ?
 - How to get First N Characters in String in Go ?
 - How to get Last N Characters in String in Go ?
 - How to get Substring after Specific Character in Go ?
 - How to get Substring before Specific Character in Go ?
 - How to get Substring between two Specific Characters in Go ?
 - How to get Substring from Specific Index to End in Go ?
 - How to Iterate over Characters in String in Go ?
 - How to Iterate over Words in String in Go ?
 - How to Check if String is Empty in Go ?
 - How to Check if String contains only Alphabets in Go ?
 - How to Check if String contains only Alphabets and Numbers in Go ?
 - How to Check if String contains only Numeric Digits in Go ?
 - How to Check if a String contains given Substring in Go ?
 - How to Check if String contains specific Character in Go ?
 - How to Check if String starts with Specific Prefix in Go ?
 - How to Check if String ends with Specific Suffix in Go ?
 - How to Append a String to another String in Go ?
 - How to Append a Character to beginning of a String in Go ?
 - How to Append a Character to end of a String in Go ?
 - How to Concatenate Two Strings in Go ?
 - How to Repeat a String N Times in Go ?
 - How to Insert Character at Specific Index in String in Go ?
 - How to Replace a Substring in String in Go ?
 - How to Replace multiple Spaces with a Single Space in String in Go ?
 - How to Replace Character at Specific Index in String in Go ?
 - How to Replace All Occurrences of a Substring in a String in Go ?
 - How to Replace a Substring in a String using Regular Expression in Go ?
 - How to Split a String in Go ?
 - How to Split a String by New Line in Go ?
 - How to Split a String by Comma in Go ?
 - How to Sort Characters in String in Go ?
 - How to convert String to Lowercase in Go ?
 - How to convert String to Uppercase in Go ?
 - How to Trim a String in Go ?
 - How to convert First Character in String to Uppercase in Go ?
 - How to Reverse a String in Go ?
 - How to Remove Character at specific Index in a String in Go ?
 - How to Remove First Character in a String in Go ?
 - How to Remove Last Character in a String in Go ?
 - How to Remove first N Characters in a String in Go ?
 - How to Remove last N Characters in a String in Go ?
 - How to Remove specific Substring in Go ?
 - How to Remove specific Character from a String in Go ?
 - How to Remove All Whitespace Characters from a String in Go ?
 - How to Remove Special Characters from a String in Go ?
 - How to keep only Alphabets in a String in Go ?
 - How to Convert Integer to String in Go ?
 - How to Convert String to Integer in Go ?
 - How to convert String to Float in Go ?
 - How to convert Float to String in Go ?
 - How to check if Two Strings are Equal in Go ?
 - How to check if Two Strings are Equal ignoring case in Go ?
 - How to Compare Two Strings in Go ?
 - How to find the Characters in the First String that are not Present in the Second String in Go ?
 - How to find the Index of Substring in Go ?
 - How to find the Index of Last Occurrence of Substring in Go ?
 - How to find the Indices of All Occurrences of Substring in Go ?
 - How to get all the possible Substrings of a String in Go ?
 - How to get all the possible K length Substrings in a String in Go ?