expvar – 线性安全全局变量

最后更新于:2022-04-02 02:43:42

[TOC] ## 概述 - 对这些公共变量的读写操作都是原子级的 ## 接口 ``` func Publish(name string, v Var) type Float func NewFloat(name string) *Float func (v *Float) Add(delta float64) func (v *Float) Set(value float64) func (v *Float) String() string func (v *Float) Value() float64 type Int func NewInt(name string) *Int func (v *Int) Add(delta int64) func (v *Int) Set(value int64) func (v *Int) String() string func (v *Int) Value() int64 type Map func NewMap(name string) *Map func (v *Map) Add(key string, delta int64) func (v *Map) AddFloat(key string, delta float64) func (v *Map) Delete(key string) func (v *Map) Do(f func(KeyValue)) func (v *Map) Get(key string) Var func (v *Map) Init() *Map func (v *Map) Set(key string, av Var) func (v *Map) String() string type String func NewString(name string) *String func (v *String) Set(value string) func (v *String) String() string func (v *String) Value() string type Var func Get(name string) Var ``` ## 实例 用来存放简单的全局变量,并且是线性安全 ### expvar.NewInt() /expvar.NewFloat() ``` name := expvar.NewInt("name") name.Set(456) name.Add(123) //456+123 name.String() //"579" name.Value() //579 ``` ### expvar.NewString() ``` newString := expvar.NewString("test") newString.Set("hello") fmt.Println(newString.Value()) ``` #### 打印 expvar添加的信息 ``` count := expvar.NewInt("count") // or var num expvar.Int expvar.Publish("num", &num) ``` 如果开启http服务,传入的"count"或`expvar.Pulish`中的字符串在用于显示在 `/debug/vars`中
';