Из небольших изменений в Go 1.27 я больше всего рад strings.CutLast. Эта функция делит строку по последнему вхождению разделителя.
Конечно, реализовать ее несложно и самому:
// CutLast делит s на части до и после последнего вхождения sep.
func CutLast(s, sep string) (before, after string, found bool) {
if i := strings.LastIndex(s, sep); i >= 0 {
return s[:i], s[i+len(sep):], true
}
return s, "", false
}
Но приятно, что теперь делать этого не придется:
s := "go|for|it"
_, last, ok := strings.CutLast(s, "|")
fmt.Println(last, ok)
// it true
Интересно, что Cut добавили еще в 1.20, а CutLast почему-то пробыла в немилости аж 7 релизов :)