gpt4 book ai didi

go - 接口(interface)方法可以在 Go 中实现 "skipped"吗?

转载 作者:行者123 更新时间:2023-12-01 22:32:52 24 4
gpt4 key购买 nike

我不确定“跳过”是否是描述我所看到的正确方式:

type Container struct {
clck sync.Mutex
closed bool
cli *client.Client
ID string
IO io.ReadWriteCloser
closetimeout time.Duration
}

func (c *Container) Write(dat []byte) (int, error) {
return c.IO.Write(dat)
}

func (c *Container) Read(dat []byte) (int, error) {
return c.IO.Read(dat)
}

在我看来 ReadWrite方法未实现。这在 Golang 中叫什么?

最佳答案

如果您在谈论 Container类型,ReadWrite方法实现已在您的代码中显示。你不能为一个类型定义一个方法而不实现它。使用这些方法,Container现在实现 io.Reader , io.Writer , 和 io.ReadWriter接口(interface)。 ReadWrite Container的方法简单地将操作委托(delegate)给 ReadWriteCloser IO 所指向的 field 。 Container未实现 Close方法,所以它不是 io.ReadWriteCloser .

如果你在谈论 c.IO.Read ,这些方法是使用接口(interface)调用的。当您创建 Container例如,您必须设置 c.IO到实现 io.ReadWriteCloser 的结构, 当 c.IO.Read被调用时,该结构上的方法将被调用。例如,os.File实现 io.ReadWriteCloser , 这样你就可以:

file, err:=os.Open("filename")
ctr:=Container{IO:file}

在此之后, ctr.Write将写入该文件。

关于go - 接口(interface)方法可以在 Go 中实现 "skipped"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59802078/

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