golang标准库中的expvar包

栏目: Go · 发布时间: 6年前

内容简介: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,每个具体的类型都包含这几个函数:

1New*()  //  新建一个变量
2Set(*)   //  设置这个变量
3Add(*)  //  在原有变量上加上另一个变量
4String()  // 实现Var接口
除此之外,Map还有几个特有的函数:
1Init()                  // 初始化Map
2Get(key string)  // 根据key获取value
3Do(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包》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Cult of the Amateur

The Cult of the Amateur

Andrew Keen / Crown Business / 2007-6-5 / USD 22.95

Amateur hour has arrived, and the audience is running the show In a hard-hitting and provocative polemic, Silicon Valley insider and pundit Andrew Keen exposes the grave consequences of today’s......一起来看看 《The Cult of the Amateur》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

html转js在线工具
html转js在线工具

html转js在线工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具