Go Basics

Go Strings and the strings Package

Join, search, split, trim and slice text in Go.

  • Beginner
  • 2 min read
  • 1 runnable example
What you'll learn
  • Building strings
  • Contains, Index, Split
  • Slicing a string
message[0:5]
H0
e1
l2
l3
o4
,5
The end index 5 is not included.

Read-only text with many helpers

A Go string is a read-only sequence of bytes, usually UTF-8 text. You cannot change a string in place, but you can build new ones, and the strings package has functions for most everyday jobs.

+= builds a new string. len counts bytes. Contains and Index search the text, Split cuts it at a separator and returns a slice, and message[0:5] takes the bytes from position 0 up to, but not including, 5.

Key points

  1. A string cannot be changed in place.
  2. len counts bytes.
  3. message[0:5] takes bytes 0 to 4.

Runnable Go example

Go
Run code →
main.go
package main

import (
	"fmt"
	"strings"
)

func main() {
	message := "Hello, Go"
	message += "!"

	fmt.Println(message)
	fmt.Println(len(message), strings.ToUpper(message))
	fmt.Println(strings.Contains(message, "Go"), strings.Index(message, "Go"))
	fmt.Println(strings.Split("a,b,c", ","))
	fmt.Println(strings.Repeat("=", 5), strings.TrimSpace("  padded  "))
	fmt.Println(message[0:5], string(message[7]))
}
Get a Run button for this example Result of running the code
Hello, Go!
10 HELLO, GO!
true 7
[a b c]
===== padded
Hello G

Practice

Open the example in the online compiler, change a value or add a line, and predict the output before you run it. Then break the code on purpose and read the compiler's message.

Finished this lesson?

Mark it as learned to track your progress.

Next: Reverse a String →

Practice with a challenge

Use what this lesson covers to solve a real problem. Each challenge runs in your browser with instant tests and an AI review.

All challenges