📔

sugared

sugar = 砂糖 => 甘い => わかりやすい => 受け入れやすい、というイメージ

プログラミングでは、よりわかりやすい書き方、よりかんたんな書き方、省略した書き方のことを syntax sugar という。 日本語では糖衣構文。砂糖で甘くコーティングした構文という感じだろうか

ubar-go/zap にちょうど sugared の記載があったので書いておくと、厳密に書くにはこんな感じですべて型を指定して書くのだけど

logger, _ := zap.NewProduction()
defer logger.Sync()
logger.Info("failed to fetch URL",
  // Structured context as strongly typed Field values.
  zap.String("url", url),
  zap.Int("attempt", 3),
  zap.Duration("backoff", time.Second),
)

Sugared な書き方だと型を指定せずに書ける。ただ型を指定しない分、厳密な書き方より低速でと高アロケーション。 といってもほかのパッケージより圧倒的に軽いけれど

logger, _ := zap.NewProduction()
defer logger.Sync() // flushes buffer, if any
sugar := logger.Sugar()
sugar.Infow("failed to fetch URL",
  // Structured context as loosely typed key-value pairs.
  "url", url,
  "attempt", 3,
  "backoff", time.Second,
)
sugar.Infof("Failed to fetch URL: %s", url)