String manipulation in Go

Basic Operations

  • Get char array of a String
greeting := "Comment allez-vous" 
greeingCharacterArr := []rune(greeting)
  • Get a char at the specific index
fmt.Printf("%c", greeting[5])

The result would be  “n“. However, without the character formatter, the result would be the Unicode decimal code 110.

  • Get string length
  • Substrings
func substring(s string, beginIndex int) string{
return s[beginIndex:]

func substring2(s string, beginIdx int, endIdx int) string {
return s[beginIdx:endIdx]
  • String to Integer
testN,_ := strconv.Atoi("1234")  
testN += 1

strconv package

Above examples : https://play.golang.org/p/kds_Lu9HyTJ

  • Comparing Strings

To compare strings, use the comparison operators ==, < and >

The strings package has a Compare function that comes with a warning that no one should use strings.Compare


Sorting and Searching Strings in Golang

The sort package in Go has some very useful methods for sorting and searching slices and strings.

The sort.StringSlice attaches the methods of Interface to []string, sorting in increasing order. https://golang.org/pkg/sort/#StringSlice


package main 
import (

func main() {
countries := sort.StringSlice{"USA", "India", "South Africa"}
n := countries.Search( "USA")
fmt.Println(""Result: ", n, countries[n])


Result: 3 USA

Sorting Characters in a string

To sort characters in a string, we use the fact that strings in Go can be represented as a slice of runes. We could extend the generic sort function in Go to sort the slice of runes. To use the generic sort, we need to implement sort.Interface – Len, Swap, Less.

type sortRunes []rune 

func (s sortRunes) Less(i, j int) bool {
return s[i] < s[j]

func (s sortRunes) Len() int{
return len(s)

func (s sortRunes) Swap(i, j int) {
s[i], s[j] = s[j], s[i]

str1 := "sortthisstring"
s := []rune(str1) sort.Sort(sortRunes(s))

See the full working example here:


Note the sort package comments, Sort makes one call to data.Len to determine n, and O(n*log(n)) calls to   data.Less and data.Swap.