英文:
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 := <-c; erw != nil {
fmt.Printf("filepath.Walk() returned %v\n", erw)
// log.Fatal(erw)
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论