4 回复
哈哈!没错,我忘了那部分 😄
嗨 Cherolyn,
抱歉,但看起来 Go Playground 不允许运行无限循环!😄
问题在于在 for{} 循环中,你从未改变 bd 的值。当我在 Linux 上运行程序时,它会一直打印 1956。
尝试在循环内插入类似 bd++ 或 bd = bd + 1 的语句,或许可以放在 fmt.Printf() 调用之后。
func main() {
bd := 1956
for {
fmt.Printf("出生年份:%d\n", bd)
bd++ // 在此处增加 bd 的值
}
}
这是一个Go语言代码示例,展示了如何使用time.After函数来处理超时情况。当代码执行时间超过指定时间限制时,程序会提前终止以避免无限期等待。
package main
import (
"fmt"
"time"
)
func main() {
c := make(chan string, 1)
go func() {
time.Sleep(2 * time.Second) // 模拟耗时操作
c <- "操作完成"
}()
select {
case res := <-c:
fmt.Println(res)
case <-time.After(1 * time.Second):
fmt.Println("操作超时")
}
}
在这个示例中:
- 创建了一个带缓冲的channel
- 启动一个goroutine模拟耗时2秒的操作
- 使用
select语句同时监听channel和超时信号 time.After(1 * time.Second)会在1秒后发送一个信号- 由于操作需要2秒完成,但超时设置为1秒,因此会输出"操作超时"
这种模式在实际开发中很常见,用于防止某些操作无限期阻塞程序执行。

