Могу ли я перебрать строку, используя для c: = range <string>, но использовать только символ, а не индекс? - PullRequest
0 голосов
/ 20 февраля 2020

По сути, я хочу перебрать строку, получая каждый символ и делая что-то с этим символом. Однако, когда я пытаюсь выполнить l oop через строку, я должен предоставить одну переменную для индекса символа и одну переменную для самого символа ie. for pos, char := range myString {*do something*}. Как мне просто назначить сам символ, не назначая индекс?

1 Ответ

0 голосов
/ 20 февраля 2020

Форма range для l oop выполняет итерации по срезу или карте.

При определении диапазона по срезу для каждой итерации возвращаются два значения:

  1. Первый - это индекс среза;
  2. Второй - это копия элемента с этим индексом.

Предположим, что у нас есть функция, которая проверяет, является ли число a prime number, и у нас есть массив с номерами кандидатов, которые мы можем вызвать функцией двумя различными способами:

var prime []int = []int{2, 3, 5, 7, 11, 13, 17, 19, 23}

func TestIsPrimeByValue(t *testing.T) {
    for _, item := range prime {
        if !IsPrime(item) {
            t.Fail()
        }
    }
}

func TestIsPrimeByIndex(t *testing.T) {
    for i := range prime {
        if !IsPrime(prime[i]) {
            t.Fail()
        }
    }
}

С первым l oop мы итерируем value массива.
Со вторым l oop мы итерируем index массива. Это пример с int. Вы можете заменить массив строкой и перебрать байты строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...