编程 - Go语言如何在闭包里使用全局变量?

查看:85
本文介绍了编程 - 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全局变量里面,我该怎么办?

解决方案

怎么不可以用了,你把

fmt.Sprintf("%v\n", Files)

改成

fmt.Println(Files)

看看

这篇关于编程 - Go语言如何在闭包里使用全局变量?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆