gpt4 book ai didi

pointers - bytes.Reader,替换底层 []byte 数组

转载 作者:IT王子 更新时间:2023-10-29 02:16:29 25 4
gpt4 key购买 nike

我一直在努力寻找一种很好的方法来交付 Reader 接口(interface){},而无需重新创建与 io.Reader 关联的方法。

这是我正在使用的:

type EZReader struct {
data *bytes.Reader
}

func (self *EZReader) Replace(input []byte) {
self.data = bytes.NewReader(input)
}

func (self *EZReader) Read(p []byte) (n int, err error) {
return self.data.Read(p)
}

感觉,不对,有没有更好的办法呢?

我的想法是,我可以将这个 io.Reader 交给一个函数,并将底层数组更改为

我需要它而不必重新分配想要使用它的对象,在本例中是 json 解码器。

最佳答案

如果你embed结构中的字段,也可以在结构上调用该字段的所有方法。所以如果你写

type EZReader struct {
*bytes.Reader
}

您不必重新实现 Read()。这样一个字段的行为就好像它被命名为 Reader 一样。请注意,您无法避免以这种方式公开字段。

关于pointers - bytes.Reader,替换底层 []byte 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27628548/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com