package main
import "fmt"
func main() {
value := "cat"// Take length of string with len.
length := len(value)
fmt.Println(length)
// Loop over the string with len.for i := 0; i < len(value); i++ {
fmt.Println(string(value[i]))
}
}3
c
a
t
Slice length. A slice can be the argument to len(). This returns the number of elements (of any value) in the slice. Here we test len on a 4-element int slice.
Detail We call the append() built-in to add a fifth element to the slice. The len() method then returns 5.
package main
import "fmt"
func main() {
slice := []int{10, 20, 30, 40}// Get length of slice with len.
length := len(slice)
fmt.Println(slice)
fmt.Println(length)
// Append an element, and take the length again.
slice = append(slice, 50)
fmt.Println(slice)
fmt.Println(len(slice))
}[10 20 30 40]
4
[10 20 30 40 50]
5
Nil. In Go, a slice may be nil—this is a nonexistent slice. The len of a nil slice is 0. No panic results from taking the len of a nil thing.
package main
import "fmt"
func main() {
// A slice with len of 3.
value := []int{10, 20, 30}
fmt.Println(len(value))
// A nil slice has a len of 0.
value = nil
fmt.Println(len(value))
}3
0
Performance. The performance of len does not depend on the length of the string. Its time is constant. This is achieved in languages by storing the string's length as a field on the object.
So Len is fast. On my system it can be used 10 million times on a string of any length in less than 10 ms.
Version 1 This version of the code uses the len built-in on a short string of just 3 characters.
Version 2 This version uses len on a longer string of 65 characters. It shows that len returns in constant time.
package main
import (
"fmt"
"time"
)
func main() {
// Length is 3.
string1 := "cat"// Length is 13 times 5 which is 65.
string2 := "cat0123456789" +
"cat0123456789" +
"cat0123456789" +
"cat0123456789" +
"cat0123456789"
t0 := time.Now()
// Version 1: length of short string.for i := 0; i < 10000000; i++ {
result := len(string1)
if result != 3 {
return
}
}
t1 := time.Now()
// Version 2: length of long string.for i := 0; i < 10000000; i++ {
result := len(string2)
if result != 65 {
return
}
}
t2 := time.Now()
// Print results.
fmt.Println(t1.Sub(t0))
fmt.Println(t2.Sub(t1))
}7.0049ms len( 3 character string)
7.0189ms len(65 character string)
A summary. Len discovers lengths of things. In an array, the length is part of the type itself. But for strings and slices, a stored value (maintained by the runtime) is returned.
Dot Net Perls is a collection of tested code examples. Pages are continually updated to stay current, with code correctness a top priority.
Sam Allen is passionate about computer languages. In the past, his work has been recommended by Apple and Microsoft and he has studied computers at a selective university in the United States.
This page was last updated on Aug 31, 2022 (simplify).