Благодарность и задать вопрос - 🤍🤍donationalerts.ru/r/beminer Давайте глянем на массивы и срезы в Go. Массивы не сильно отличаются от срезов, можно сказать даже единственным отличием является то, что массив имеет ограниченную длину и при определении ( точнее объявлении ) массива выделяется сразу необходимое место в памяти, которое уже нельзя изменить, как и сам массив ( длину массива ). А вот срез это можно сказать динамический массив. Можно объявить пустой срез с минимальной длиной и по ходу дела добавлять или удалять из среза элементы. Но стоит учесть, что при добавлении или удалении элемента из среза, сам срез перезаписывается, т.е можно сказать появляется новая переменная, в нее записываются новые данные ( все данные из старого массива и добавляется / удаляется новый элемент ), только после этого удаляется старая переменная с данными ( это образно ). При большом срезе эта операция будет ресурсо затратна. Домашнее задание: просмотреть с помощью цикла любую директорию на компьютере, в которой есть папки / файлы и создать: - массив, длинной равной количеству элементов в папке, после чего заполнить массив элементами, которые . находятся в папке ( смотрим папку - создаем массив - вписываем в массив названия папок / файлов ). В конце вывести массив и длину массива - пустой срез, который наполнить элементами из просмотренной папки. Наполнить срез в цикле. В конце вывести срез и длину среза Первый канал - 🤍🤍youtube.com/channel/UC5_Ptc6YIOEm55JLCdB0pOw лучший VDS хостинг для наших нужд - 🤍goo.gl/QqDX31 Блог канала - 🤍be-miner.info/ Instagram - 🤍🤍instagram.com/bgtolife Чат в телеграме- 🤍t.me/beminer_censored (🤍bem_censored) Группа в ВКонтакте - 🤍vk.com/beminer GitHub - 🤍github.com/beminer Благодарность и задать вопрос - 🤍🤍donationalerts.ru/r/beminer
тема слайсов не раскрыта
package main
import (
"fmt"
"io/ioutil"
)
func main() {
fmt.Println("В ведите дирикторию:")
var patch string
fmt.Scan(&patch)
files, _ := ioutil.ReadDir(patch)
var arr []string
for _, file := range files {
arr = append(arr, file.Name())
}
for _, key := range arr {
fmt.Println(key)
}
println("Кол-Во файлов и директорий = ", len(arr))
}
мое решение:
package main
import (
"fmt"
"io/ioutil"
"log"
)
func main() {
arDir,errors := ioutil.ReadDir("C:\\Users\\user8")
if errors != nil {
log.Fatal(errors)
}
itemsCount := len(arDir)
slice := make([]string, 0, itemsCount)
var arr [41]string
for i, files:= range arDir{
slice = append(slice, files.Name())
arr[i] = files.Name()
}
fmt.Println(arr, len(arr))
fmt.Println(slice, len(slice))
}
лучше на гите код кидать.
Огонь))))!
Приветствую. Почему если назначить " var array := []int{1,2,3} " возникает ошибка синтаксиса? Потому-что переменная array зарезервирована в языке как массив? И её нельзя назначить? Или в чем проблема
Если я все верно понял, то должно получится вот так:
package main
import (
"fmt"
"io/ioutil"
"log"
)
func main() {
/*-- Пустой срез, который наполнить элементами из просмотренной папки. Наполнить срез в цикле. В конце вывести срез и длину среза --*/
slice := []string{}
files, err := ioutil.ReadDir(".")
if err != nil {
log.Fatal(err)
}
for _, file := range files {
slice = append(slice, file.Name())
}
fmt.Println(slice, len(slice))
/*-- Массив, длинной равной количеству элементов в папке, после чего заполнить массив элементами, которые . находятся в папке --*/
array := make([]string, len(files))
for k, v := range files {
array[k] = v.Name()
}
fmt.Println(array, len(array))
}
крутяк
ʕ༼◕ ౪ ◕✿༽ʔ
В реальных проектах, массивы обычно не используют. Юзают именно срезы, которые называют массивами.
У меня тут небольшой вопросик по поводу домашнего задания.
>массив, длинной равной количеству элементов в папке
Это как? Длина массива должна быть фиксированной, так что var[len(sumDir)]string не работает.