无限循环:继续打印一行

Infinite Loop: keep printing a single line

有一个无限循环,每 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秒后重新执行时,我想要将要打印的数据替换掉同一行之前打印的数据。

有人能给我指出正确的方向吗?

为此,您需要打印回车符 return 字符 \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!"
    }
    
}