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

Прошло несколько дней с тех пор, как я начал изучать го. Сейчас я изучаю такие структуры данных, как Array и Slice, и наткнулся на следующее упражнение:

Using a COMPOSITE LITERAL:
* Create an ARRAY which holds 5 VALUES of TYPE int
* Assign VALUES to each index position.

Давайте забудем о сложном буквальном смысле. С самой первой попытки я сделал что-то вроде этого:

var myArray [5]int
for i := 0; i < len(myArray); i++ {
    myArray[i] = 3
}

Первый оператор инициализирует массив, содержащий 5 целых чисел. Первая часть упражнения сделана!

Второй оператор просматривает массив и присваивает значение 3 для каждого индекса. Вы можете запустить код здесь и получить результат:

[3 3 3 3 3]

Хорошо, похоже, нам удалось закончить упражнение. Но что, черт возьми, такое составной буквальный? И почему это имеет значение для этого упражнения?

Оказывается, составной литерал - это что-то, что может облегчить нашу жизнь, когда мы хотим присвоить значения при инициализации переменной. Если бы мы хотели заполнить массив цифрой «3» (или любой другой комбинацией целых чисел) при его инициализации, мы могли бы использовать следующий код вместо выполнения оператора for:

myArray := [5]int{3, 3, 3, 3, 3} // Short syntax
// OR
var myArray [5]int = [5]int{3, 3, 3, 3, 3} // Long syntax

Как новичок, вы, вероятно, чешете в затылке, пытаясь понять это. Давайте разберемся по порядку:

var myArray [5]int

Этот код объявляет массив размером 5, содержащий целые числа. То есть в нем 5 целых чисел. И мы присваиваем значение этому массиву:

 = [5]int{3, 3, 3, 3, 3}

Это составной литерал, который вычисляет массив размером 5 со значениями 3, 3, 3, 3, 3:

[3, 3, 3, 3, 3]

По сути, мы просто заполняем массив при инициализации, без ручного перебора каждого индекса и установки значения. Вы, наверное, видели их на других языках программирования:

<?php
$myArray = [3, 3, 3, 3, 3];

Это было особенно интересно для меня, потому что я всегда использовал составные литералы в других языках программирования, но никогда не понимал, что это называется «составным литералом».

Если вы хотите узнать об этом больше, спецификация Go - отличный ресурс:

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



Продолжай учиться! Вы делаете отличную работу!