无限循环:继续打印一行

问题描述

一个无限循环,它将每5秒调用一次function()。根据某些条件,function()将打印OKNot 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!"
    }
    
}