我想创建一个显示歌曲每一行的/health
。我试图在刷新页面后显示歌曲的下一行,但我下面的代码不起作用,我不知道缺少什么。
期待
它应该像这样在每次刷新后从歌曲中返回不同的台词。
➜ curl http://localhost:8080/health
It starts with one thing
➜ curl http://localhost:8080/health
I don't know why
➜ curl http://localhost:8080/health
It doesn't even matter how hard you try
现实
➜ curl http://localhost:8080/health
It starts with one thing
➜ curl http://localhost:8080/health
It starts with one thing
➜ curl http://localhost:8080/health
It starts with one thing
以下是 main.go
和 teSTLib.go
中的一些行。
teSTLib.go
func GetLine() func() string {
n := 0
lines := strings.Split(readFile(), "\n")
length := len(lines) - 1
return func() string {
nextLine := lines[n]
if n == length {
n = 0
return nextLine
}
n++
return nextLine
}
}
func Handler(next http.HandlerFunc) http.HandlerFunc {
return func (w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "text/plain; charset=utf-8")
log.Println(r.URL.Path)
next.ServeHTTP(w, r)
}
}
main.go
func health(w http.ResponseWriter, r *http.Request) {
line := testlib.GetLine()
fmt.Fprintln(w, line())
}
func main() {
http.Handle("/health", testlib.Handler(health))
log.Printf("http://127.0.0.1:8080 is now listening.")
if err := http.ListenAndServe("127.0.0.1:8080", nil); err != nil {
log.Fatal(err)
}
}
最佳答案
因为 n
是局部变量,所以每当您调用 GetLine()
函数时,它总是会重新声明为 0
。可能你需要一个全局变量来保存最后一行的值 :D
关于go - 刷新后如何打印下一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53367526/