golang 小ネタ

f:id:pigggg:20210805000638p:plain

goでの前方一致と後方一致

imports "strings"

prefix := "hoge"
suffix := "bar"
str := "hoge foo bar"

strings.HasPrefix(str, prefix) // true
strings.HasSuffix(str, suffix) // true
  

strings の中身

func HasPrefix(s, prefix string) bool {
  return len(s) >= len(prefix) && s[0:len(prefix)] == prefix
}

func HasSuffix(s, suffix string) bool {
  return len(s) >= len(suffix) && s[len(s)-len(suffix):] == suffix
}

HasPrefix

対象文字列の長さとprefixの長さを比較して、対象文字列のほうが長かった
かつ
対象文字列の0番目からprefixの長さ(バイト長)分までを取って、引数のprefixと比較

HasSuffix

対象文字列の長さとsuffixの長さを比較して、対象文字列のほうが長かった
かつ
対象文字列長からsuffix長を引いた添字から対象文字列の最後までの切り出し、suffixと比較