Go 语言

Go 语言教程 Go 语言环境安装 Go 语言结构 Go 语言基础语法 Go 语言数据类型 Go 语言变量 Go 语言常量 Go 语言运算符 Go 语言条件语句 Go 语言 if 语句 Go 语言 if...else 语句 Go 语言 if 语句嵌套 Go 语言 switch 语句 Go 语言 select 语句 Go 语言循环语句 Go 语言 for 循环 Go 语言循环嵌套 Go 语言 break 语句 Go 语言 continue 语句 Go 语言 goto 语句 Go 语言函数 Go 语言函数值传递值 Go 语言函数引用传递值 Go 语言函数作为值 Go 语言函数闭包 Go 语言函数方法 Go 语言变量作用域 Go 语言数组 Go 语言多维数组 Go 语言向函数传递数组 Go 语言指针 Go 语言指针数组 Go 语言指向指针的指针 Go 语言指针作为函数参数 Go 语言结构体 Go 语言切片(Slice) Go 语言范围(Range) Go 语言Map(集合) Go 语言递归函数 Go 语言类型转换 Go 语言接口 Go 错误处理 Go 语言开发工具Go 语言标准库

Go 语言标准库


package expvar

import "expvar"

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

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

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

cmdline   os.Args
memstats  runtime.Memstats

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

import _ "expvar"

Go语言标准库 >>


  • type Var
  • type Int
  • type Float
  • type String
  • type Func
  • type KeyValue
  • type Map
  • 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。迭代执行时会锁定全局变量映射,但已存在的记录可以同时更新。