Dictionary Go-使用闭包并向切片添加映射-filesystem.walk

Dictionary Go-使用闭包并向切片添加映射-filesystem.walk,dictionary,go,closures,Dictionary,Go,Closures,在下面的代码中,我试图将文件信息添加到地图中,地图将被添加到切片中。该切片包含文件系统中每个文件的映射。我的理解是,这类似于用Python构建字典数组的方式 package files import ( "path/filepath" "os" "fmt" ) func GetFiles() { var numScanned int var fileSlice = []map{} numScanned = 0 var scan =

在下面的代码中,我试图将文件信息添加到地图中,地图将被添加到切片中。该切片包含文件系统中每个文件的映射。我的理解是,这类似于用Python构建字典数组的方式

package files

import (
   "path/filepath"
   "os"
   "fmt"
 )

func GetFiles() {

    var numScanned int 
    var fileSlice = []map{}

    numScanned = 0 

    var scan = func(path string, f os.FileInfo, err error) error {
        numScanned ++ 

        var fileDetails map[string]interface{}
        fmt.Printf("%s with %d bytes\n", path,f.Size())
        fileDetails["filename"] = f.Name()
        fileDetails["filesize"] = f.Size()


        fileSlice = append(fileSlice, fileDetails) //Error =  cannot use fileDetails (type map[string]interface {}) as type string in append

        if err != nil { 
            fmt.Println(err)
        } else {
            fmt.Printf("%s with %d bytes\n", path,f.Size())
        }
        return nil

    }

    directories := [] string {"C:\\"} 
    numOfDirectories := len(directories)

    for i := 0; i < numOfDirectories; i++ {
        err := filepath.Walk(directories[i], scan)
        if err != nil {
            fmt.Printf(err.Error())
        }
    }   

    fmt.Printf("%d", numScanned)

}
我还试图弄清楚闭包在Go中是如何工作的,这样我就可以将文件细节添加到映射中,映射被添加到切片中,我可以在filesystem.Walk完成后访问该切片

谢谢

编辑:


我更新了代码,但如何制作一张地图?

错误显示其全部-
字符串
!=<代码>映射[字符串]接口{}。另外,您正在隐藏
文件详细信息
。您不能将映射放入
[]字符串
,您没有初始化映射,您正在
扫描
函数中重新声明映射,隐藏外部作用域。感谢您的帮助。我更新了导致新错误的代码。你如何制作一张地图的切片?今天下午我看了一会儿。你为什么用地图?
c:\project\src>go run main.go
# files
C:\project\src\files\files.go:12: syntax error: unexpected ]
C:\project\src\files\files.go:14: non-declaration statement outside function body
C:\project\src\files\files.go:36: non-declaration statement outside function body
C:\project\src\files\files.go:37: non-declaration statement outside function body
C:\project\src\files\files.go:44: non-declaration statement outside function body
C:\project\src\files\files.go:46: non-declaration statement outside function body
C:\project\src\files\files.go:48: syntax error: unexpected }