filepath.Walk() 返回了 0xc08402f180

huangapple go评论81阅读模式
英文:

filepath.Walk() returned 0xc08402f180

问题

我是你的中文翻译助手,以下是翻译好的内容:

我对Go语言还不熟悉,正在尝试学习。

我编写了一个遍历目录的程序。它运行得很好,但是当我尝试在Go协程中运行该程序时,它返回了以下内容:

> filepath.Walk() 返回了 0xc08402f180

我的函数如下:

func LoadData(root string) {
    runtime.GOMAXPROCS(runtime.NumCPU())
    c := make(chan error)
    go func() {c<-filepath.Walk(root, WalkFunc)}()
    if erw := c; erw != nil {
        fmt.Printf("filepath.Walk() 返回了 %v\n", erw)
    // log.Fatal(erw)
    }
}

我该如何解决这个问题?

谢谢。

英文:

I am new to the Go language and trying to learn.

I made a program to walk through a directory. It worked fine but when I try to run the program in a go routine it returns:

> filepath.Walk() returned 0xc08402f180

my function is this:

func LoadData(root string) {
    runtime.GOMAXPROCS(runtime.NumCPU())
    c := make(chan error)
    go func() {c<-filepath.Walk(root, WalkFunc)}()
    if erw := c; erw != nil {
        fmt.Printf("filepath.Walk() returned %v\n", erw)
    // log.Fatal(erw)
    }
}

How can I solve this problem?

Thanks.

答案1

得分: 4

你正在打印通道本身,而不是通道的返回值。尝试使用以下代码:

if erw := <-c; erw != nil {
    fmt.Printf("filepath.Walk() 返回了 %v\n", erw)
    //  log.Fatal(erw)
}
英文:

You are printing the channel, not the return from the channel. Try this

if erw := &lt;-c; erw != nil {
    fmt.Printf(&quot;filepath.Walk() returned %v\n&quot;, erw)
//  log.Fatal(erw)
}

huangapple
  • 本文由 发表于 2014年3月3日 01:12:52
  • 转载请务必保留本文链接:https://go.coder-hub.com/22130672.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定