1、可以直接通过结构体,而并非实例来调用结构体的函数:
type metricBuilder struct {
metric string
aggregator string
tags map[string]string
value string
}
func (this metricBuilder) Name(metric string) *metricBuilder {
return &metricBuilder{
metric: metric,
}
} 这个结构体的Name函数使用可以这样用:
func CounterN(metric string, cnt int, tags ...map[string]string) error {
mb := metricBuilder{}.Name(metric).CounterN(cnt)
if len(tags) > 0 {
for key, val := range tags[0] {
mb.Tag(key, val)
}
}
return mb.Push()
} 2、通常在建一个包时,经常需要在包里定义一些全局变量,但外部在调用此包时,则需要屏蔽这些全局变量,这种情况下常用的方式有:
在包中定义成员函数与公共函数,其中公共函数可以是成员函数的封装。
在公共函数中,再通过全局变量调用其成员函数。
转载请注明原文地址: https://ju.6miu.com/read-10382.html