Получение срезов из существующих срезов/массивов
Часть раздела Основы путешествия по GO на Coddy — урок 80 из 109.
Вы можете создать новый срез из существующего среза или массива, указав диапазон с помощью синтаксиса [start:end].
Создайте срез чисел:
numbers := []int{10, 20, 30, 40, 50}
fmt.Println("Original:", numbers)Извлеките элементы с индекса 1 по 3 (не включая 3):
slice1 := numbers[1:3]
fmt.Println("Slice [1:3]:", slice1)Результат:
Original: [10 20 30 40 50]
Slice [1:3]: [20 30]Вы также можете опустить начальный или конечный индекс:
slice2 := numbers[:2] // От начала до индекса 2 (не включая 2)
slice3 := numbers[3:] // От индекса 3 до конца
fmt.Println("Slice [:2]:", slice2)
fmt.Println("Slice [3:]:", slice3)Результат:
Slice [:2]: [10 20]
Slice [3:]: [40 50]Задание
НовичокВ этом испытании вы попрактикуетесь в создании срезов из существующего среза для создания новых под-срезов. У вас есть срез фруктов, и вам нужно создать из него два новых среза:
- Срез, содержащий только первые три фрукта
- Срез, содержащий только последние два фрукта
Затем выведите оба новых среза, чтобы проверить свою работу.
Шпаргалка
Создайте новый срез из существующего среза или массива, используя синтаксис [start:end]:
numbers := []int{10, 20, 30, 40, 50}
slice1 := numbers[1:3] // Элементы от индекса 1 до 3 (не включая 3)
fmt.Println(slice1) // [20 30]Вы можете опустить начальный или конечный индекс:
slice2 := numbers[:2] // От начала до индекса 2 (не включая 2)
slice3 := numbers[3:] // От индекса 3 до конца
fmt.Println(slice2) // [10 20]
fmt.Println(slice3) // [40 50]Попробуйте сами
package main
import "fmt"
func main() {
// Вот наш исходный срез фруктов
fruits := []string{"apple", "banana", "orange", "grape", "kiwi"}
// TODO: Создайте новый срез с именем 'firstThree', содержащий только первые три фрукта
// TODO: Создайте новый срез с именем 'lastTwo', содержащий только последние два фрукта
// Вывод результатов
fmt.Println("First three fruits:", firstThree)
fmt.Println("Last two fruits:", lastTwo)
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Операторы сравнения и логические операторы
Операторы сравнения — Часть 1Операторы сравнения — Часть 2Логический оператор ANDЛогический оператор ORЛогический оператор NOTОсновы приоритета операторовИтоги: выполнение сравнений7Управляющие конструкции: Циклы
Что такое цикл `for`Цикл `for` — основыЦикл `for` — только условиеКлючевое слово `break`Ключевое слово `continue`Вложенные циклыИтоги — повторение действий2Переменные и базовые типы данных
Что такое переменнаяВывод типов с помощью `:=`Целые числа (int)Числа с плавающей точкойЛогический тип (Booleans)СтрокиНулевые значения (Zero Values)КонстантыПравила именованияИтоги: переменные и типы5Основы ввода-вывода
Форматированный выводСпецификаторы форматаВывод типовБазовый ввод данных пользователемИтоги: ввод и вывод8Функции
Понимание функцийОбъявление функцииВызов функцийПараметры функцииВозврат одного значенияВозврат нескольких значенийИменованные возвращаемые значенияОсновы области видимости функцийИтоги — создание переиспользуемого кода11Составные типы: Срезы
Введение в срезыОбъявление литералов срезовСоздание срезов с помощью `make`Длина и емкость срезаДоступ к элементам срезаДобавление элементовПолучение срезов из существующих срезов/массивовИтерация по срезамКопирование срезовИтоги: Динамические списки3Базовые операторы
Арифметические операторыОператор деленияОператор остатка от деленияОператор присваиванияКомбинированные операторы присваиванияИнкремент и декрементПовторение — Вычисления6Управление потоком: Условные конструкции
Оператор `if`Ключевое слово `else`Ключевое слово `else if`Затенение переменных в `if`Инициализация переменныхОператор `switch`Switch с выражениямиSwitch без выраженийКлючевое слово `fallthrough`Итоги — Принятие решений