package benchmarks import ( "strings" "testing" ) func BenchmarkPostsSublist(b *testing.B) { p := generatePostsList() // fmt.Println(p) b.ResetTimer() // reset timer before cycle b.Run("GetPostListBySubstring1", func(b *testing.B) { for i := 0; i < b.N; i++ { p.GetPostListBySubstring1("#Aiogram") } }) } func (posts Posts) GetPostListBySubstring1(substring string) Posts { res := make(Posts, 0, len(posts)) // Если первый символ - #, то поиск происходит по тегам if substring = substring + " "; substring[0] == '#' { for i := range posts { // добавляю пробел, чтобы не было ситуации включения одного тега в начало другого if strings.Contains(posts[i].Tags+" ", substring) { res = append(res, posts[i]) } } } return res }