Golang代码这里哪里出问题了?

Golang代码这里哪里出问题了? https://play.golang.org/p/8-X5w845ANi

5 回复

谢谢!

更多关于Golang代码这里哪里出问题了?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


我正在尝试将大写字母表的每个符文码点打印三次

你只需要在格式字符串中添加一个百分号:

fmt.Printf("\t%#U\n", i)

这取决于你想做什么?你确定 # 是你想要的字符,而不是 % 吗?%U 会打印 Unicode 格式,详见 https://golang.org/pkg/fmt/

如果你不告诉我们期望的输出是什么,就很难指出问题所在。

在提供的代码中,主要问题在于 main 函数过早退出,导致 goroutine 没有足够时间执行并输出结果。这是因为 main 函数在启动 goroutine 后立即结束,程序随之终止,goroutine 可能来不及运行。

以下是修复后的代码示例,通过添加同步机制(如 sync.WaitGroup)确保 main 函数等待 goroutine 完成:

package main

import (
    "fmt"
    "sync"
)

func main() {
    var wg sync.WaitGroup
    wg.Add(1)
    
    go func() {
        defer wg.Done()
        fmt.Println("Hello from goroutine")
    }()
    
    wg.Wait()
}

在这个修复版本中,sync.WaitGroup 用于等待 goroutine 执行完毕。wg.Add(1) 表示有一个任务需要等待,defer wg.Done()goroutine 结束时通知 WaitGroup,而 wg.Wait() 会阻塞直到任务完成。这样就能确保输出被正确打印。

回到顶部