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`中
';