Go语言 无法将结构用作类型结构{...}

u0njafvf  于 11个月前  发布在  Go
关注(0)|答案(2)|浏览(90)

我有这个代码:

type Iterable[T any] struct {
    Val  T
    End  T
    Next func() (bool, T)
}

func acceptStructWithNext[T any](r struct{ Next func() (bool, T) }) {
    fmt.Println(r)
}

func main() {

    iterable := Iterable[int]{
        Val: 0,
        End: 100,
        Next: func() (bool, int) {
            return true, 0
        },
    }

    acceptStructWithNext[int](iterable) // error is here

}

字符串
我得到这个编译错误:
无法将“iterable”(类型Iterable[int])用作类型结构{...}
我以为结构类型应该允许这种类型的事情-我错在哪里?

yv5phkfx

yv5phkfx1#

我认为结构化类型应该允许这种类型的东西[...]
是的,但是Go * 没有 *“结构类型”。在某种程度上,结构类型的好处可以通过接口的隐式满足规则来实现。但是这只适用于 * 接口 *。
请参阅https://go.dev/doc/faq#implements_interface
[...]我哪里做错了?
通过假设Go会像教科书一样对结构类型进行结构类型化。

bzzcjhmw

bzzcjhmw2#

struct {Val int; End int; Next func() (bool, int)}struct{ Next func() (bool, int) }是不同的类型。第一个有瓦尔和End字段。第二个没有。

相关问题