golang byte 转writer_聊聊golang的zap的WriteSyncer

本文主要研究一下golang的zap的WriteSyncer

6faa92ab451e0169f99af8dfdd3eda73.png

WriteSyncer

zap@v1.16.0/zapcore/write_syncer.go

type WriteSyncer interface {    io.Writer    Sync() error}

WriteSyncer内嵌了io.Writer接口,定义了Sync方法

Writer

/usr/local/go/src/io/io.go

type Writer interface {    Write(p []byte) (n int, err error)}

Writer接口定义了Write方法

lockedWriteSyncer

zap@v1.16.0/zapcore/write_syncer.go

type lockedWriteSyncer struct {    sync.Mutex    ws WriteSyncer}func Lock(ws WriteSyncer) WriteSyncer {    if _, ok := ws.(*lockedWriteSyncer); ok {        // no need to layer on another lock        return ws    }    return &lockedWriteSyncer{ws: ws}}func (s *lockedWriteSyncer) Write(bs []byte) (int, error) {    s.Lock()    n, err := s.ws.Write(bs)    s.Unlock()    return n, err}func (s *lockedWriteSyncer) Sync() error {    s.Lock()    err := s.ws.Sync()    s.Unlock()    return err}

lockedWriteSyncer定义了sync.Mutex及WriteSyncer属性,它实现了WriteSyncer接口,它对Write和Sync方法都加了锁,内部委托的WriteSyncer;Lock方法用于创建lockedWrite

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值