package expvar

import “expvar”

expvar包提供了公共变量的标准接口,如服务的操作计数器。本包通过HTTP在/debug/vars位置以JSON格式导出了这些变量。

对这些公共变量的读写操作都是原子级的。

为了增加HTTP处理器,本包注册了如下变量:

cmdline os.Args memstats runtime.Memstats 有时候本包被导入只是为了获得本包注册HTTP处理器和上述变量的副作用。此时可以如下方式导入本包:

import _ “expvar” Index 返回首页

type Var type Int func NewInt(name string) *Int func (v *Int) Add(delta int64) func (v *Int) Set(value int64) func (v *Int) String() string type Float func NewFloat(name string) *Float func (v *Float) Add(delta float64) func (v *Float) Set(value float64) func (v *Float) String() string type String func NewString(name string) *String func (v *String) Set(value string) func (v *String) String() string type Func func (f Func) String() string type KeyValue type Map func NewMap(name string) *Map func (v *Map) Init() *Map func (v *Map) Get(key string) Var func (v *Map) Set(key string, av Var) func (v *Map) Add(key string, delta int64) func (v *Map) AddFloat(key string, delta float64) func (v *Map) Do(f func(KeyValue)) func (v *Map) String() string func Get(name string) Var func Publish(name string, v Var) func Do(f func(KeyValue)) type Var type Var interface { String() string } Var接口是所有导出变量的抽象类型。

type Int type Int struct { // 内含隐藏或非导出字段 } Int代表一个64位整数变量,满足Var接口。

func NewInt

func NewInt(name string) *Int func (*Int) Add

func (v *Int) Add(delta int64) func (*Int) Set

func (v *Int) Set(value int64) func (*Int) String

func (v *Int) String() string type Float type Float struct { // 内含隐藏或非导出字段 } Float代表一个64位浮点数变量,满足Var接口。

func NewFloat

func NewFloat(name string) *Float func (*Float) Add

func (v *Float) Add(delta float64) Add adds delta to v.

func (*Float) Set

func (v *Float) Set(value float64) Set sets v to value.

func (*Float) String

func (v *Float) String() string type String type String struct { // 内含隐藏或非导出字段 } String代表一个字符串变量,满足Var接口。

func NewString

func NewString(name string) *String func (*String) Set

func (v *String) Set(value string) func (*String) String

func (v *String) String() string type Func type Func func() interface{} Func通过调用函数并将结果编码为json,实现了Var接口。

func (Func) String

func (f Func) String() string type KeyValue type KeyValue struct { Key string Value Var } KeyValue代表Map中的一条记录。(键值对)

type Map type Map struct { // 内含隐藏或非导出字段 } Map代表一个string到Var的映射变量,满足Var接口。

func NewMap

func NewMap(name string) *Map func (*Map) Init

func (v *Map) Init() *Map func (*Map) Get

func (v *Map) Get(key string) Var func (*Map) Set

func (v *Map) Set(key string, av Var) func (*Map) Add

func (v *Map) Add(key string, delta int64) func (*Map) AddFloat

func (v Map) AddFloat(key string, delta float64) AddFloat向索引key对应的值(底层为Float)修改为加上delta后的值。

func (*Map) Do

func (v *Map) Do(f func(KeyValue)) Do对映射的每一条记录都调用f。迭代执行时会锁定该映射,但已存在的记录可以同时更新。

func (*Map) String

func (v *Map) String() string func Get func Get(name string) Var Get获取名为name的导出变量。

func Publish func Publish(name string, v Var) Publish声明一个导出变量。必须在init函数里调用。如果name已经被注册,会调用log.Panic。

func Do func Do(f func(KeyValue)) Do对导出变量的每一条记录都调用f。迭代执行时会锁定全局变量映射,但已存在的记录可以同时更新。