важный вопрос. Кроме размера в памяти, и динамики в чем разница то между срезом и массивом? В каком случаи используем массив, в каком срез (исключая надобность экономии памяти и возможности расширения). Заранее спасибо за ответ.
Если я все верно понял, то должно получится вот так: 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 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 array := []int{1,2,3} " возникает ошибка синтаксиса? Потому-что переменная array зарезервирована в языке как массив? И её нельзя назначить? Или в чем проблема
Потому что надо либо `var array = []int{1,2,3}`, либо `array := []int{1,2,3}`
В реальных проектах, массивы обычно не используют. Юзают именно срезы, которые называют массивами.
не спорю, но рассказать об этом нужно
Почему не используют? Потому что часто нет необходимости использовать фиксированную длину массива?
крутяк
мое решение:
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))
}
func main() {
files, err := os.ReadDir("./dz")
if err != nil {
log.Fatal(err)
}
var fileName []string
for _, file := range files {
fileName = append(fileName, file.Name())
}
fmt.Println(len(fileName), fileName)
}
ахах, массив стрингов, не плохо)
лучше на гите код кидать.