Let’s explore characters frequency in the go string. Characters in go are in the format int32 – rune, and they can have any unicode value. Here is a simple go program https://play.golang.org/p/fbg7VXetxCg .
package main
import (
"fmt"
"sort"
)
func runeCharsFrequency(inpStr string) string {
m := make(map[rune]int)
for _, runeChar := range inpStr {
m[runeChar]++
}
var keys []rune
for kRune, _ := range m {
keys = append(keys, kRune)
}
sort.Slice(keys, func(i, j int) bool {
return keys[i] < keys[j]
})
outStr := ""
comma := ""
for _, k := range keys {
outStr += fmt.Sprint(comma, k, ":", m[k])
comma = ", "
}
return outStr
}
func main() {
s := "Hello World!!!!!"
fmt.Println("Characters frequency in string: "+s)
fmt.Println(runeCharsFrequency(s))
}
Characters in the output have ordinal value and count:
32:1, 33:5, 72:1, 87:1, 100:1, 101:1, 108:3, 111:2, 114:1