问题描述
有一个无限循环,它将每5秒调用一次function()。根据某些条件,function()将打印OK
或Not Ok
。
这是我的代码:
package main
import (
"fmt"
"time"
"net/http"
)
func main() {
for {
dummy()
time.Sleep(5 * time.Second)
}
}
func dummy() {
resp,_ := http.Get("dummy.test.com")
if resp.StatusCode == 200 {
fmt.Println("OK")
} else {
fmt.Println("Not OK.")
}
}
代替打印:
OK
OK
OK
...
反之亦然,我希望打印一行,就像这样:
OK
并且当function()在5秒后重新执行时,我希望将要打印的数据替换同一行上的先前打印数据。
有人可以指出我正确的方向吗?
解决方法
您需要为此打印回车符\r
,而这是Println
无法做到的。建议改用Printf
fmt.Printf("\r%s","OK")
,
尝试一下:
package main
import (
"fmt"
"time"
"net/http"
)
func main() {
for {
result := dummy()
fmt.Println(result)
time.Sleep(5 * time.Second)
}
}
func dummy() string {
resp,_ := http.Get("dummy.test.com")
if resp.StatusCode == 200 {
return "OK"
} else {
return "Not Ok!"
}
}