gpt4 book ai didi

http - 如何在Golang HTTP服务器中定义全局计数器

转载 作者:IT王子 更新时间:2023-10-29 01:51:25 32 4
gpt4 key购买 nike

我是GoLang的新手,
想要在go-lang中定义一个全局计数器来记录对http服务器进行的查询数量。

我认为最简单的方法是定义一个存储当前计数的“全局”变量,并在每个查询中增加它(为方便起见,我们将并发问题放在一边)。

无论如何,这是到目前为止我计划实现的代码:

package main

import (
"fmt"
"net/http"
)

count := 0 // *Error* non-declaration statement outside function body
func increment() error{
count = count + 1
return nil
}

func mainHandler(w http.ResponseWriter, r *http.Request){
increment()
fmt.Fprint(w,count)
}

func main(){
http.HandleFunc("/", mainHandler)
http.ListenAndServe(":8085",nil)
}

如您所见,无法在此处定义var count,它与我以前使用的Java servlet不同。

那么我该如何实现呢?

最佳答案

在函数之外,不能使用短变量声明:=。在定义全局变量的函数之外,您必须使用variable declaration(带有var关键字):

var count int

它会自动初始化为 int的零值 0

链接:

我建议您阅读 Go Language Specification的相关部分:

Variable declarations

Short variable declarations

注意:

由于每个请求的处理都在其自己的goroutine中运行,因此您需要显式同步以访问共享计数器,或者必须使用其他同步方式进行正确的计数。

关于http - 如何在Golang HTTP服务器中定义全局计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27917750/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com