Go语言如何在闭包里使用全局变量?
package main
import (
"fmt"
"os"
"path/filepath"
)
var Files []string
func main() {
/*
wc, _ := os.Getwd()
var directory = flag.String("dir", wc, "which dir you wanna scan")
flag.Parse()
*/
err := Scan("/usr/local/var/www/app")
if err == nil {
fmt.Println("files:")
fmt.Sprintf("%v\n", Files)
} else {
fmt.Println("errors:")
fmt.Fprintf(os.Stderr, "%v", err)
}
}
func Scan(path string) error {
err := filepath.Walk(path, func (path string, f os.FileInfo, err error) error {
if f == nil {
return err
}
if f.IsDir() {
return nil
}
Files = append(Files, path)
return nil
})
return err
}
上述代码并不能将path push到Files全局变量里面,我该怎么办?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
怎么不可以用了,你把
改成
看看
在后面加个fmt.Println(len(Files))
fmt.Sprintf("%v\n", Files)
换成fmt.Println(Files)
就好了。。。。没发现什么不对的,楼上说的没错 Sprintf
注释说的很清楚的