【发布时间】:2019-10-10 18:14:37
【问题描述】:
我正在阅读 MicroMDM SCEP 存储库中的此源代码,https://github.com/micromdm/scep/blob/1e0c4b782f3f2e1e6f81da5f82444a6cedc89df3/cmd/scepclient/scepclient.go#L54-L65:
func run(cfg runCfg) error {
ctx := context.Background()
var logger log.Logger
{
if strings.ToLower(cfg.logfmt) == "json" {
logger = log.NewJSONLogger(os.Stderr)
} else {
logger = log.NewLogfmtLogger(os.Stderr)
}
stdlog.SetOutput(log.NewStdlibAdapter(logger))
logger = log.With(logger, "ts", log.DefaultTimestampUTC)
if !cfg.debug {
logger = level.NewFilter(logger, level.AllowInfo())
}
}
lginfo := level.Info(logger)
我想知道显式块(外部{ ... })的目的是什么?这段代码会不会和它们被删除时不完全一样,比如
func run(cfg runCfg) error {
ctx := context.Background()
var logger log.Logger
if strings.ToLower(cfg.logfmt) == "json" {
logger = log.NewJSONLogger(os.Stderr)
} else {
logger = log.NewLogfmtLogger(os.Stderr)
}
stdlog.SetOutput(log.NewStdlibAdapter(logger))
logger = log.With(logger, "ts", log.DefaultTimestampUTC)
if !cfg.debug {
logger = level.NewFilter(logger, level.AllowInfo())
}
lginfo := level.Info(logger)
也许显式块只是为了提高可读性?
【问题讨论】:
-
没有目的。
标签: go lexical-scope