Изучаем Go. Карты в Go. Maps in Go. Программирование на Go #5

preview_player
Показать описание

Карты ( maps ) в Golang представляют из себя "справочник", когда у нас есть ключ и значение. В ролике подробно рассказываю что это такое, как понять и как пользоваться.
Мы будем часто пользоваться картами, т.к это очень удобно и производительно, да и такое хранение данных очень читабельно. Мы еще не раз столкнемся с картами, так что рекомендую ознакомиться с материалом получше.

Домашнее задание:
- создайте карту со следующим содержимым:
---- в ключа запишите название папки ( ключей должно быть несколько)
---- в роли значения будет массив / срез из названий файлов
- по циклу пройдитесь по карте и создайте папки с названиями из ключей, в этих папках создайте файлы с названиями из значений

Выглядеть должно примерно так:
NAME_DIR : name_fileN, name_fileN, name_fileN
NAME_DIR1 : name_fileN, name_fileN

Вторая программа ( или функция ):
- пройдитесь в цикле по созданным папкам из первой части домашнего задания
- названия папок представьте в виде ключей в карте
- названия файлов представьте в виде значений в карте
Берем первую папку и записываем ее как ключ в карте, все файлы из этой папки записываем как срез из значений к ключу. И так надо пройтись по всем папкам и создать одну карту. В конце программы вывести карту на экран.

Благодарность и задать вопрос -
Рекомендации по теме
Комментарии
Автор

Думаю, стоило ещё показать выборку по несуществующему ключу и обработку. Такое требуется часто, делается несложно, и видео удлинило бы чутка. :)

bdzz
Автор

Быть может будет кому полезно :)

Решение первого задания:

package main

import (
"fmt"
"io/ioutil"
"log"
"os"
"path/filepath"
)

func main() {

message := []byte("Hello, World!")

carta := map[string][]string{
"DOCS_DIR": {"docs_file1", "docs_file2", "docs_file3"},
"PHOTOS_DIR": {"photos_file1", "photos_file2"},
}

for keys, values := range carta {

// Создаем директории на основе ключей
if _, err := os.Stat(keys); os.IsNotExist(err) {
os.Mkdir(keys, 0644)
fmt.Println(keys, "Directory Created")
} else {
fmt.Println(keys, "Directory already exists")
}

// Создаем файлы в директориях

for _, files := range values {
path := filepath.Join(keys, files)
err := ioutil.WriteFile(path, message, 0644)
if err != nil {
log.Fatal(err)
}

}

}

}

СергейПтушкин-кы
Автор

Все отлично, правда следовало акцентировать внимание на то, что ключ всегда уникален, а вот значения могут быть любыми... А так лайк! Подача хорошая!

ЕвгенийМартынов-ив
Автор

Короче карты это мутная тема, нужно глубоко копать, что бы их понять.

misteranderson
Автор

Всё классно, но мне кажется что лучше было бы начать с простой карты, не добавлять сразу туда срез ;)

sanqrellregetta
Автор

О да, пытаться понять это в половину первого, да ещё и на скорости 1.5 (в последствии снижена до 1.25). Так уж и быть, посмотрю когда высплюсь ;)

stripwire-siie
Автор

А жаль не полез в дебри! Например, почему фор перебирает в случайном порядке?

MrBogish
Автор

Кароч, я так понял карты - это просто словарь?

fluffis
Автор

ТАК МАССИВ ИЛИ СРЕЗ???? P.S: ЭТО МАССИВ, УЗНАЙ ЧТО ТАКОЕ СРЕЗ, ОК?

valerauryadov
Автор

Зачем словарь назвали каким-то "левым" словом? Чем "словарь" не угодил?)

paul_wiggin