185

Just curious to findout: why aren't there standard functions like startswith, endswith, etc as part of the standard libraries in the Go programming language?

Sahas
  • 10,637
  • 9
  • 41
  • 51

2 Answers2

318

The strings package contains HasPrefix and HasSuffix.

import "strings"

startsWith := strings.HasPrefix("prefix", "pre") // true
endsWith := strings.HasSuffix("suffix", "fix") // true

play.golang.org

Kyle Finley
  • 11,842
  • 6
  • 43
  • 64
4

If you are working with bytes, you can use these functions from the bytes package:

package main

import (
   "bytes"
   "fmt"
)

func main() {
   fmt.Println(bytes.HasPrefix([]byte("Gopher"), []byte("Go")))
   fmt.Println(bytes.HasPrefix([]byte("Gopher"), []byte("C")))
   fmt.Println(bytes.HasPrefix([]byte("Gopher"), []byte("")))
}

It will be less costly than converting to string first. Useful if you are reading in from an HTTP request, or reading from a local file.

Zombo
  • 1
  • 62
  • 391
  • 407