Вопрос пользователя:
Ответ нейросети:
package main
import (
"context"
"io"
)
func Contains(ctx context.Context, r io.Reader, seq []byte) (bool, error) {
buffer := make([]byte, len(seq))
offset := 0
for {
select {
case <-ctx.Done():
return false, ctx.Err()
default:
n, err := r.Read(buffer)
if err != nil {
if err == io.EOF {
return false, nil
}
return false, err
}
for i := 0; i < n; i++ {
if buffer[i] == seq[offset] {
offset++
if offset == len(seq) {
return true, nil
}
} else {
offset = 0
}
}
}
}
}
func main() {
// Пример использования функции
ctx := context.Background()
r := strings.NewReader("hello world")
seq := []byte("world")
found, err := Contains(ctx, r, seq)
if err != nil {
fmt.Println("Error:", err)
} else {
fmt.Println("Sequence found:", found)
}
}
Этот код представляет функцию Contains, которая ищет первое вхождение байтовой последовательности seq в данных, доступных через Reader r. Функция работает в контексте ctx, чтобы можно было отменить операцию поиска.
Напишите нам, если в вопросе есть ваши персональные данные ([email protected])
Обратите внимание: ответы, предоставляемые искусственным интеллектом, могут не всегда быть точными. Не рассчитывайте на них в критически важных областях, таких как медицина, юриспруденция, финансы или в вопросах, связанных с безопасностью. Для важных решений всегда обращайтесь к квалифицированным специалистам. Администрация сайта не несет ответственности за контент, сгенерированный автоматически.