Strings in Go
A string in Go is a sequence of byte
values.
As we saw above you can define a string using this syntax:
var name = "test"
It’s important to note that unlike other languages, strings are defined only using double quotes, not single quotes.
To get the length of a string, use the built-in len()
function:
len(name) //4
You can access individual characters using square brackets, passing the index of the character you want to get:
name[0] //"t" (indexes start at 0)
name[1] //"e"
You can get a portion of the string using this syntax:
name[0:2] //"te"
name[:2] //"te"
name[2:] //"st"
Using this you can create a copy of the string using
var newstring = name[:]
You can assigning a string to a new variable:
var first = "test"
var second = first
Strings are immutable, so you cannot update the value of a string.
Even if you assign a new value to first
using an assignment operator, the value second
is still going to be "test"
:
var first = "test"
var second = first
first = "another test"
first //"another test"
second //"test"
Strings are reference types, which means if you pass a string to a function, the reference to the string will be copied, not its value. But since strings are immutable, in this case it’s not a big difference in practice with passing an int
, for example.
You can concatenate two strings using the +
operator:
var first = "first"
var second = "second"
var word = first + " " + second //"first second"
Go provides several string utilities in the the strings
package.
We already saw how to import a package in the “Hello, World!” example.
Here’s how you can import strings
:
package main
import (
"strings"
)
And then you can use it.
For example we can use the HasPrefix()
function to see if a string starts with a specific substring:
package main
import (
"strings"
)
func main() {
strings.HasPrefix("test", "te") // true
}
The full list of methods can be found here: https://pkg.go.dev/strings
Here’s a list of methods you might use frequently:
strings.ToUpper()
returns a new string, uppercasestrings.ToLower()
returns a new string, lowercasestrings.HasSuffix()
checks if a string ends with a substringstrings.HasPrefix()
checks if a string starts with a substringstrings.Contains()
checks if a string contains a substringstrings.Count()
counts how many times a substring appears in a stringstrings.Join()
used to join multiple strings and create a new onestrings.Split()
used to create an array of strings from a string, dividing the original one on a specific character, like a comma or a spacestrings.ReplaceAll()
used to replace a portion in a string and replace it with a new one
→ I wrote 17 books to help you become a better developer, download them all at $0 cost by joining my newsletter
→ JOIN MY CODING BOOTCAMP, an amazing cohort course that will be a huge step up in your coding career - covering React, Next.js - next edition February 2025