Strings

The strings package, formatting with fmt.Sprintf, bytes vs runes, and regular expressions with regexp.

Runs in Zerethon IDE · Go 1.27 Official Go documentation ↗
main.go
package main

import (
	"fmt"
	"regexp"
	"strings"
)

func main() {
	name := "Ada Lovelace"
	fmt.Printf("%s has %d characters\n", name, len(name))
	fmt.Println(strings.ToUpper(name), strings.ToLower(name), name[:3])
	fmt.Println(strings.TrimSpace("  padded  ") + "|")
	fmt.Println(strings.Split("a,b,c", ","), strings.Join([]string{"x", "y", "z"}, "-"))
	fmt.Println(strings.ReplaceAll(name, "Ada", "Augusta"), strings.HasPrefix(name, "Ada"), strings.Contains(strings.ToLower(name), "love"))
	fmt.Printf("%.2f %5d %03d %q\n", 3.14159, 42, 7, "hi")
	fmt.Println(len("héllo"), len([]rune("héllo")))

	var b strings.Builder
	for i := range 3 {
		fmt.Fprintf(&b, "[%d]", i)
	}
	fmt.Println(b.String())

	text := "Order 12 shipped, order 7 pending"
	fmt.Println(regexp.MustCompile(`\d+`).FindAllString(text, -1))
	m := regexp.MustCompile(`order (\d+) pending`).FindStringSubmatch(text)
	fmt.Println(m[1])
}

Output

Ada Lovelace has 12 characters
ADA LOVELACE ada lovelace Ada
padded|
[a b c] x-y-z
Augusta Lovelace true true
3.14    42 007 "hi"
6 5
[0][1][2]
[12 7]
7
  • A string is read-only bytes in UTF-8. len(s) counts bytes, so len("héllo") is 6; []rune(s) gives the characters.
  • A string in backquotes is raw: a regular expression written in backquotes keeps its backslashes (\d+), which is what regexp needs.
  • Building a long string in a loop: use strings.Builder, not s += ....
  • FindStringSubmatch returns nil when nothing matches — check before using m[1].