Рубрики
Uncategorized

Серия PHP to Go: Массивы и фрагменты

Автор оригинала: David Wong.

Определение массивов

Студентам, которые использовали PHP, должно быть очень ясно, независимо от того, насколько сложный формат данных может быть выражен массивами, в него можно подключить любой тип данных, это необходимая часть работы, использование простое, простота в использовании просто ненормальна.

$array = [1,'name', ['sex'=>'man'];

В языке Go массивы представляют собой непрерывную область памяти фиксированной длины, что полностью соответствует концепции языка Си. При объявлении массивов мы должны сначала определить длину массивов, а элементы в массивах могут использовать только один тип, heartache, мы больше не можем хранить данные по желанию.

array := [3]int{1, 2, 3}

Это определения массивов на языке Go. [3] Представляет массив длиной 3, int Это тип элемента в массиве и элемент в фигурных скобках. Помните, что номер и тип элемента должны соответствовать предыдущему утверждению, иначе будет сообщено об ошибке. В дополнение к этому подходу в PHP также существует метод динамического присвоения, код которого выглядит следующим образом.

$array = [];
$array[0] = 'name';
$array[1] = 1;
print_r($array);

//output
Array
(
    [0] => name
    [1] => 1
)

Язык Go также может это сделать, но не стоит так много думать о хранении элементов разных типов данных (на самом деле выхода нет, объясняется в следующей статье). Вы можете объявить массив с помощью var, а длина и тип массива определяются заранее. Затем вы можете присвоить значения в соответствии с индексами массива. Вам не нужно присваивать значения каждому индексу, но помните, что индексы не могут выходить за рамки, иначе вы будете сообщать об ошибках.

var array [3]string
array[0] = "name"
array[1] = "sex"
fmt.Print(array) //output [name sex ]

Каждый раз, когда вы объявляете массив, вы должны подсчитывать количество элементов. Это слишком куриные ребрышки, чтобы писать в средних скобках. Этого нельзя ожидать от Go. Конечно же, вы можете им воспользоваться. ... Метод, позволяющий опустить заключенные в квадратные скобки значения, чтобы компилятор автоматически определял элементы в массиве.

array := [...]string{"a", "b", "c", "d"}
fmt.Print(array) //output [a b c d]

Обход массивов

Массив был определен, см. раздел “Как пройти” в PHP через foreach Прохождение.

$array = ["a", "b", "c", "d"];
foreach($array as $k => $v) {
    echo $v;
}
//output abcd

Go написан очень похожим образом, с помощью диапазона Пройдитесь по нему, но грамматика выглядит немного странно.

array := [...]string{"a", "b", "c", "d"}
for k, v := range array {
    fmt.Print(k, v)
}
//output 0a1b2c3d

Переменные, которые не используются в Go, будут сообщать об ошибках при компиляции, поэтому K не может использоваться во время обхода. Как решить проблему, при которой переменная K не используется? На самом деле вы можете использовать встроенные символы Go _ Для замены переменной k, то есть отказаться от присвоенного в данный момент значения.

array := [...]string{"a", "b", "c", "d"}
for _, v := range array {
    fmt.Print(v)
}
//output abcd

Перехват массивов

Перехват массива проходит через функцию PHP array_slice , следующий код начинается со второго элемента массива, перехватывающего два элемента.

$array = [1, 2, 3, 4, 5];
print_r(array_slice($array, 1, 2));

//output
Array
(
    [0] => 2
    [1] => 3
)

В Go проще напрямую извлекать данные между вторым и четвертым элементами. Стоит отметить, что извлеченные данные больше не являются массивом, они называются срезом. Помните, что часть, вырезанная из массива, называется срезом. Самое простое различие между массивом и срезом заключается в том, что массив должен четко указывать размер, и срез не нужно разрезать. Да, массивы передают значения, а срезы передают адреса. Но пока это все еще массив.

array := [...]int{1, 2, 3, 4, 5}
fmt.Print(array[1:3])

Добавление массивов

Добавьте новый элемент в массив в PHP, чтобы использовать функцию array_push .

$array = [1, 2, 3, 4, 5];
array_push($array, 6);
print_r($array);

//output
Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
    [5] => 6
)

Используйте в функции Go добавить , обратите внимание, что на самом деле это добавление среза, а не массива.

array := []int{1, 2, 3, 4, 5}
array = append(array, 6)
fmt.Print(array) //output [1 2 3 4 5 6]

Удаление элементов массива

Удаление элементов массива в PHP очень просто и просто отменить Следующий код удаляет второй элемент.

$array = [1, 2, 3, 4, 5];
unset($array[1]);
print_r($array);

//output
Array
(
    [0] => 1
    [2] => 3
    [3] => 4
    [4] => 5
)

В частности, Go не предоставляет собственный метод удаления, а использует только характеристики срезов. Мы определяем индекс удаленного элемента как 1, а затем объединяем элементы перед 1 с элементами за 1, чтобы отфильтровать первый элемент. Это кажется немного спекулятивным. Я не знаю, почему мы не предоставляем функцию. Операция.

index := 1
array := []int{1, 2, 3, 4, 5}
array = append(array[:index], array[index+1:]...)
fmt.Print(array) //output [1 3 4 5]

вышесказанное-это разница между PHP и Go в массивах. Заинтересованные студенты могут самостоятельно изучить мои последующие статьи или обратить на них внимание.