如何使用for循环创建对象切片

时间:2019-11-11 06:57:08

标签: go

代码:

    files, err := ioutil.ReadDir(".")
    elements := make(map[string]interface{})
    for _, file := range files {
        elements["name"] = file.Name()
        elements["directory"] = file.IsDir()
        elements["size"] = file.Size()
    }
    ctxt.JSON(http.StatusOK, elements)

这是我收到的仅包含最后一个文件详细信息的回复。
如何创建对象切片,这意味着我希望响应中包含所有文件的详细信息。

2 个答案:

答案 0 :(得分:2)

类似这样的东西:

files, err := ioutil.ReadDir(".")
elements := []map[string]interface{}{}
for _, file := range files {
    elements = append(elements, map[string]interface{}{
        "name":      file.Name(),
        "directory": file.IsDir(),
        "size":      file.Size()})
}
ctxt.JSON(http.StatusOK, elements)

答案 1 :(得分:0)

代替添加,您可以创建具有大小的数组

package main
import (
    "fmt"
    "io/ioutil"
)

func main() {
    files, _ := ioutil.ReadDir(".")
    elements := make([]map[string]interface{}, len(files))
    for i, file := range files {

        e := map[string]interface{}{
            "name":      file.Name(),
            "directory": file.IsDir(),
            "size":      file.Size(),
        }

        elements[i] = e
    }

    for i, e := range elements {
        fmt.Println(i, e)
    }
}