Больше итераторов в Go 1.24
Как известно, в 1.23 авторы Go воспылали необъяснимой стратью к итератором, и этот пожар с тех пор только разгорается жарче.
Вот притащили еще горстку в пакете strings
.
Lines
итерирует по строкам, разделенным \n
:
s := "one\ntwo\nsix"
for line := range strings.Lines(s) {
fmt.Print(line)
}
one
two
six
SplitSeq
итерирует по частям, разделенным произвольным разделителем:
s := "one-two-six"
for part := range strings.SplitSeq(s, "-") {
fmt.Println(part)
}
one
two
six
SplitAfterSeq
как SplitSeq
, но делит после разделителя:
s := "one-two-six"
for part := range strings.SplitAfterSeq(s, "-") {
fmt.Println(part)
}
one-
two-
six
FieldsSeq
итерирует по частям, разделенным пробельными символами (unicode.IsSpace
) и их последовательностями:
s := "one two\nsix"
for part := range strings.FieldsSeq(s) {
fmt.Println(part)
}
one
two
six
FieldsFuncSeq
как FieldsSeq
, но логику «пробельных» символов определяете вы сами:
f := func(c rune) bool {
return !unicode.IsLetter(c) && !unicode.IsNumber(c)
}
s := "one,two;six..."
for part := range strings.FieldsFuncSeq(s, f) {
fmt.Println(part)
}
one
two
six
Ровно такие же итераторы добавили в пакет bytes
.
★ Подписывайтесь на новые заметки.