Strings.Map
Sometimes we need to modify each character (or only some characters) in a string
. A for
-loop could be used, but calling the Map()
function is better.
With strings.Map
, we apply a character transformation to each character in a string
. In the func
, we can use any logic—we can do lookups, or use conditional statements.
Here we use strings.Map
to replace all uppercase letter "A" runes with underscores. This example shows how to apply logic to transform each rune
.
package main import ( "fmt" "strings" ) func main() { transform := func(r rune) rune { // Map uppercase A to underscore. if r == 'A' { return '_' } return r } input := "A CAT" fmt.Println(input) // Use Map() to run func on each rune. result := strings.Map(transform, input) fmt.Println(result) }A CAT _ C_T
For things like ROT13, the strings.Map
function should be used. If you need to mask certain characters (like digits or spaces) strings.Map
is also effective.
Using strings.Map
eliminates a loop. And with fewer loops, it is possible for us to have fewer bugs. This func
is a useful tool for string
transformations in this language.