gpt4 book ai didi

go - 调用接口(interface)函数出错?

转载 作者:IT王子 更新时间:2023-10-29 01:22:10 24 4
gpt4 key购买 nike

package main

import "io"

type MyClass struct{
writer *io.Writer
}

func (this *MyClass) WriteIt() {
this.writer.Write([]byte("Hello World!"))
}

为什么当 io.Writer 的实现 writer 尝试调用 Write() 函数时,显示我这个错误

this.writer.Write undefined (type *io.Writer has no field or method Write)

最佳答案

正如 makhov 所说,这是因为 MyClass 的结构定义中的 writer 是指向实现 Writer 接口(interface)的指针,而不是实现 writer 接口(interface)本身的指针.因此,您的代码应该是:

package main

import "io"

type MyClass struct{
writer io.Writer
}

func (this *MyClass) WriteIt() {
this.writer.Write([]byte("Hello World!"))
}

package main

import "io"

type MyClass struct{
writer *io.Writer
}

func (this *MyClass) WriteIt() {
(*(this.writer)).Write([]byte("Hello World!"))
}

通常情况下,第一个选项是有意义的(并且更符合习惯)。

关于go - 调用接口(interface)函数出错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28530437/

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