golang 小ネタ
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と比較