15.go开源groupcache项目笔记——sinks代码

结构体和接口

类型Sink

为接口。

type Sink interface {

         SetString(sstring) error

         SetBytes(v[]byte) error

         SetProto(mproto.Message) error

         view()(ByteView, error)

}

然后定义了不同的结构体。每个结构体都实现各自的接口。

stringSink

type stringSink struct {

         sp*string

         v  ByteView

}

byteViewSink

type byteViewSink struct {

         dst*ByteView

}

protoSink

type protoSink struct {

         dstproto.Message // authorative value

         typstring

 

         vByteView // encoded

}

truncBytesSink

type truncBytesSink struct {

         dst*[]byte

         v   ByteView

}

allocBytesSink

type allocBytesSink struct {

         dst*[]byte

         v   ByteView

}

cloneBytes函数

返回byte数组,复制参数b的数组。

setSinkView函数

入参为Sink,    ByteView.

包含一个viewSetter接口,接口包含setView函数。

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐