内容简介:1、golang中expvar包是什么?2、expvar包的作用是什么?3、expvar包有哪些内容?怎么使用?
1、golang中expvar包是什么?
2、expvar包的作用是什么?
3、expvar包有哪些内容?怎么使用?
今天学习到expvar,第一次接触这个包,包名和相关知识眼生,看了半天云里雾里的。
一、golang中expvar包是什么?
expvar包提供了公共变量的标准接口,如服务的操作计数器。本包通过HTTP在/debug/vars位置以JSON格式导出了这些变量。
为了增加HTTP处理器,本包注册了如下变量:
cmdline os.Args
memstats runtime.Memstats
这个包可以辅助调试全局变量。支持一些常见的类型:float64、int64、map、string。
二、expvar包的作用是什么?
1、它支持对变量的基本操作、修改、查询这些。
2、整形类型,可以用来做计数器。
3、操作都是协程安全的。
4、此外还提供了调试接口,/debug/vars。它能够展示所有通过这个包创建的变量。
三、expvar包有哪些内容?怎么使用?
"公共变量"即Var是一个实现了String()函数的接口,定义如下
type Var interface {
String() string
}
实际类型的Var包括:Int、Float、String和Map,每个具体的类型都包含这几个函数:
1)New*() // 新建一个变量 2)Set(*) // 设置这个变量 3)Add(*) // 在原有变量上加上另一个变量 4)String() // 实现Var接口 除此之外,Map还有几个特有的函数: 1)Init() // 初始化Map 2)Get(key string) // 根据key获取value 3)Do(f func(Key Value)) // 对Map中的每对key/value执行函数f
所有对Var的设置和修改都是原子和修改都是原子操作。
案例代码
package main
import (
"expvar"
"fmt"
"net/http"
"log"
)
func kvFunc(kv expvar.KeyValue) {
fmt.Println(kv.Key, kv.Value)
}
func main() {
inerInt := int64(10)
pubInt := expvar.NewInt("Int")
pubInt.Set(inerInt)
pubInt.Add(2)
inerFloat := 1.2
pubFloat := expvar.NewFloat("Float")
pubFloat.Set(inerFloat)
pubFloat.Add(0.1)
inerString := "hello"
pubString := expvar.NewString(inerString)
pubString.Set(inerString)
pubMap := expvar.NewMap("Map").Init()
pubMap.Set("Int", pubInt)
pubMap.Set("Float", pubFloat)
pubMap.Set("String", pubString)
pubMap.Do(kvFunc)
pubMap.Add("Int", 1)
pubMap.Add("NewInt", 123)
pubMap.AddFloat("Float", 0.5)
pubMap.AddFloat("NewFloat", 0.9)
pubMap.Do(kvFunc)
expvar.Do(kvFunc)
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "hello")
})
err := http.ListenAndServe(":8080", nil)
if err != nil {
log.Fatalln(err)
}
}
以上所述就是小编给大家介绍的《golang标准库中的expvar包》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 中兴通讯助力DevOps标准发布,喜获标准工作组成员授牌
- CODING 受邀参与 DevOps 标准体系之系统和工具 & 技术运营标准技术专家研讨会
- 中国电子技术标准化研究院雷虎:以标准为依托,构建区块链测试生态
- 倚博科技成为 DevOps/AIOps 标准工作组成员,助力国家DevOps/AIOps标准体系建设与落地
- C# 标准性能测试
- Python标准库一览
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Web 2.0 Architectures
Duane Nickull、Dion Hinchcliffe、James Governor / O'Reilly / 2009 / USD 34.99
The "Web 2.0" phenomena has become more pervasive than ever before. It is impacting the very fabric of our society and presents opportunities for those with knowledge. The individuals who understand t......一起来看看 《Web 2.0 Architectures》 这本书的介绍吧!